c# - 使用刷新 token 的 C#sharp 身份验证的 Google.Apis 客户端

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

我正在使用适用于 .NET 的新测试版 Google API 客户端库来加载多个用户的任务列表。它被归类为具有多个授权用户帐户的“已安装应用程序”(根据 google dev.console)。对一个用户进行身份验证(使用 google.apis)真的很简单,但我不知道如何使用刷新 token 执行相同的操作,以及如何使用此 token 获取服务对象。

示例代码:

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",
});

我想使用刷新 token 构造对象 credential,但我真的迷路了,找不到任何合适的文档。

最佳答案

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

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

之后,凭据刷新了 credential.Token.AccessTokencredential.Token.RefreshToken

关于c# - 使用刷新 token 的 C#sharp 身份验证的 Google.Apis 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357348/

相关文章:

c# - 如何从我的 C# 程序中获取系统中安装的防病毒软件的路径?

c# - 是否有将阿拉伯语 html 转换为 pdf 的免费组件?

C# - System.Windows.Forms.Keys - 如何将应用程序热键保存在一个地方

oauth-2.0 - 是否有 iCloud 网络 API?

Laravel Passport、Oauth 和微服务

php - 为什么我要获得访问 token ? (OAuth2)

c# - ASP.NET MVC 5 异步上下文管理

serialization - 如果数据表包含拒绝序列化的对象,如何保存数据表?

javascript - 将 XMLHttpRequest 与 Google Calendar API v3 日历结合使用 :get Request

php - 在到期前更新/重新创建 Google 推送通知 channel 的最佳方法是什么