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

.NET 6中使用AddOAuth()集成GitHub OAuth2缺失Refresh Token问题

解决GitHub OAuth授权码流程无法获取Refresh Token的问题

核心问题说明

GitHub传统OAuth Apps已取消单独的刷新令牌opt-in开关,需满足两个关键条件才能获取Refresh Token:

  1. 必须请求offline_access权限范围
  2. 授权请求中必须显式携带access_type=offline参数(这是多数人忽略的核心点)

.NET 6 AddOAuth配置修正步骤

  • 在AddOAuth配置中,需手动为授权端点追加access_type=offline参数,并确保添加offline_access权限:
services.AddAuthentication()
    .AddOAuth("GitHub", options =>
    {
        options.ClientId = "你的ClientId";
        options.ClientSecret = "你的ClientSecret";
        options.CallbackPath = "/signin-github";

        // 为授权端点添加access_type=offline参数
        options.AuthorizationEndpoint = "https://github.com/login/oauth/authorize?access_type=offline";
        options.TokenEndpoint = "https://github.com/login/oauth/access_token";
        options.UserInformationEndpoint = "https://api.github.com/user";

        // 加入offline_access权限范围
        options.Scope.Add("offline_access");
        options.Scope.Add("repo"); // 按需添加其他业务所需权限

        // 捕获并保存Refresh Token
        options.Events = new OAuthEvents
        {
            OnCreatingTicket = context =>
            {
                var refreshToken = context.TokenResponse?.RefreshToken;
                if (!string.IsNullOrEmpty(refreshToken))
                {
                    context.Properties.StoreTokens(new[]
                    {
                        new AuthenticationToken
                        {
                            Name = "refresh_token",
                            Value = refreshToken
                        }
                    });
                }
                return Task.CompletedTask;
            }
        };
    });
  • 补充:GitHub OAuth Apps返回的Refresh Token为长期有效,除非用户主动撤销授权或你手动吊销令牌。

常见误区排查

  • 不要混淆OAuth Apps和GitHub Apps:仅GitHub Apps设有单独的刷新令牌opt-in开关,传统OAuth Apps无需此操作。
  • 确认授权请求中确实包含access_type=offline,AddOAuth默认不会自动添加该参数,需手动追加。
  • 检查权限范围是否正确配置offline_access,缺少此范围将无法触发Refresh Token返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:45:36