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

请求GitHub Access Token时持续返回bad_verification_code错误求助

问题分析与解决方案

你遇到的核心问题是:前端从Auth0拿到的code是Auth0自身OAuth流程的授权码,不是GitHub OAuth直接返回的授权码,所以用它去请求GitHub的access token必然会触发bad_verification_code错误。

下面是具体的解决思路和实现方案:

正确获取GitHub Access Token的方式

方式一:让Auth0直接返回GitHub令牌

Auth0作为身份代理,会帮你完成和GitHub的OAuth交互,你可以配置Auth0将GitHub的access token返回给你:

  1. 在Auth0控制台的GitHub连接设置中,确保勾选**"Sync user profile attributes at each login"**。
  2. 前端请求Auth0 access token时,指定GitHub需要的权限scope(比如repo):
    const access_token = await getAccessTokenSilently({
      audience: '你的API Audience', // 替换为你的Auth0 API受众
      scope: 'openid profile email repo' // 包含GitHub的repo权限
    });
    
  3. 你可以通过以下两种方式拿到GitHub令牌:
    • 调用Auth0管理API的/api/v2/users/{user_id}/identities接口,返回的身份列表中,GitHub提供者对应的access_token就是你需要的。
    • 在Auth0中添加规则,将GitHub令牌写入用户元数据,后续直接从用户信息中读取。

方式二:后端通过Auth0管理API获取GitHub令牌

后端先获取Auth0管理API的令牌,再调用接口获取用户的GitHub身份令牌:

import requests

def get_github_token_from_auth0(user_id, auth0_management_token, auth0_domain):
    url = f"https://{auth0_domain}/api/v2/users/{user_id}/identities"
    headers = {"Authorization": f"Bearer {auth0_management_token}"}
    response = requests.get(url)
    identities = response.json()
    
    for identity in identities:
        if identity["provider"] == "github":
            return identity["access_token"]
    return None

额外配置检查

  1. 确认Auth0的GitHub连接中,已正确填写GitHub开发者应用的Client ID和Secret,且勾选了repo权限。
  2. 确认GitHub开发者应用的回调URL是Auth0提供的地址(格式类似https://{你的Auth0域名}.auth0.com/login/callback),不是你的前端URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:44:51