Google.Apis使用刷新令牌进行C#sharp auth的客户端

时间:2014-03-12 16:09:17

标签: c# oauth-2.0 google-api google-api-dotnet-client

我正在使用新的测试版Google API Client Library for .NET来加载多个用户的任务列表。它被归类为"已安装的应用程序" (根据谷歌开发者控制台)有多个授权用户帐户。验证一个用户(使用google.apis)非常简单,但我无法弄清楚,如何使用刷新令牌执行相同操作,以及如何使用此令牌获取服务对象。

示例代码:

        var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(GoogleTools.GenerateStreamFromString(GoogleTools.Cred)).Secrets,
        new[] { TasksService.Scope.Tasks },
        "user", CancellationToken.None, new FileDataStore("Tasks.Auth.Store")).Result;         


        // Create the service.
        service = new TasksService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Tasks API Sample",
        });

我想使用刷新令牌构建对象credential,但我真的丢失了,找不到任何合适的文档。

2 个答案:

答案 0 :(得分:0)

我已经在以下主题中回答了那个问题: .NET Google api 1.7 beta authenticating with refresh token

希望它对你也有帮助。

答案 1 :(得分:0)

您可以使用以下代码检查当前令牌是否已过期并刷新:

if (credential.Token.IsExpired(Google.Apis.Util.SystemClock.Default))
{
  var refreshResult = credential.RefreshTokenAsync(CancellationToken.None).Result;
}

此后,凭证已刷新credential.Token.AccessTokencredential.Token.RefreshToken