You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub GraphQL API v4验证用户是否使用默认头像

如何通过GitHub GraphQL API v4判断用户是否使用默认头像

GitHub GraphQL API v4本身没有提供直接标识用户是否使用默认头像的字段,但可以通过解析返回的avatarUrl来判断。

核心判断逻辑

GitHub的默认头像基于用户数字ID生成,URL格式通常是:
https://avatars.githubusercontent.com/u/<用户数字ID>?v=4
(也可能是不带v=4参数的基础形式)

而用户上传自定义头像后,avatarUrl会包含额外的随机哈希参数,格式类似:
https://avatars.githubusercontent.com/u/<用户数字ID>?s=64&v=4&<随机字符串>

实现步骤

  1. 扩展你的GraphQL查询,同时获取用户的全局ID(用来转换为数字ID):
{
    user(login: "username") {
        avatarUrl
        id # 全局ID,需要解码得到数字ID
    }
}
  1. 处理返回结果:
    • 将全局ID解码为数字ID:GitHub的全局ID是Base64编码格式(比如MDQ6VXNlcjE2ODA4OTY=),解码后会得到User:1680896,从中提取数字部分就是用户的数字ID。
    • 解析avatarUrl,提取其中的用户数字ID(从/u/后到第一个?或结尾的部分)。
    • 检查URL的查询参数:如果只有v参数(或无参数),说明是默认头像;如果有其他额外参数(比如随机哈希),则是自定义头像。

示例验证代码(以Python为例)

import base64

def get_numeric_user_id(global_id):
    # 解码GitHub全局ID得到数字ID
    decoded = base64.b64decode(global_id).decode('utf-8')
    return decoded.split(':')[1]

def is_default_avatar(avatar_url, numeric_user_id):
    # 提取URL中的用户ID部分
    url_user_id = avatar_url.split('/u/')[1].split('?')[0]
    # 确保URL中的ID和用户实际ID匹配
    if url_user_id != numeric_user_id:
        return False
    # 处理查询参数
    if '?' not in avatar_url:
        return True
    query_part = avatar_url.split('?')[1]
    params = query_part.split('&')
    # 只允许v参数存在
    valid_params = [p for p in params if p.startswith('v=')]
    return len(params) == len(valid_params)

内容的提问来源于stack exchange,提问作者Niraj Gautam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:04:55