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

如何在ASP.NET Core中持久化Google凭据以执行后台任务?

如何持久化Google认证凭据(含刷新令牌)以执行后台任务

核心实现步骤

  • 请求刷新令牌的前提配置
    必须在Google OAuth配置中添加offline_access作用域,这是获取刷新令牌的必要条件。在ASP.NET Core的AddGoogle配置里补充:

    services.AddAuthentication()
        .AddGoogle(options =>
        {
            options.ClientId = "你的客户端ID";
            options.ClientSecret = "你的客户端密钥";
            options.Scope.Add("offline_access");
            // 按需添加其他业务所需的API作用域,如drive.readonly等
        });
    
  • 捕获完整令牌数据
    在用户认证回调的OnCreatingTicket事件中,可从上下文提取包含刷新令牌的完整令牌信息:

    options.Events.OnCreatingTicket = context =>
    {
        var accessToken = context.AccessToken;
        var refreshToken = context.RefreshToken;
        var expiresAt = context.Properties.ExpiresUtc;
    
        // 将上述数据关联用户ID持久化到数据库
        // 示例:_userTokenStore.Save(context.User.FindFirstValue(ClaimTypes.NameIdentifier), "Google", accessToken, refreshToken, expiresAt);
    
        return Task.CompletedTask;
    };
    
  • 持久化与后台任务复用
    将令牌数据加密存储到数据库后,执行后台任务时按以下方式复用:

    // 从数据库取出用户的Google令牌记录
    var storedToken = _userTokenStore.GetByUserIdAndProvider(userId, "Google");
    
    var tokenResponse = new TokenResponse
    {
        AccessToken = storedToken.AccessToken,
        RefreshToken = storedToken.RefreshToken,
        ExpiresInSeconds = (long)(storedToken.ExpiresAt - DateTime.UtcNow).TotalSeconds
    };
    
    // 构建可自动刷新的凭据
    var credential = GoogleCredential.FromAccessToken(tokenResponse.AccessToken)
        .CreateWithRefreshToken(tokenResponse.RefreshToken)
        .UnderlyingCredential as UserCredential;
    
    // 调用Google API时,凭据会自动在令牌过期时刷新
    var service = new DriveService(new BaseClientService.Initializer
    {
        HttpClientInitializer = credential,
        ApplicationName = "你的应用名称"
    });
    

关键注意事项

  • 刷新令牌会在用户重复授权同一应用时失效,每次获取到新的刷新令牌都要更新数据库存储。
  • 存储令牌时必须加密,禁止明文存储,避免权限泄露。
  • 申请的OAuth作用域必须覆盖后台任务需要调用的Google API,否则令牌无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:12:44