Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用刷新令牌的C#sharp身份验证的Google.api客户端_C#_Oauth 2.0_Google Api_Google Api Dotnet Client - Fatal编程技术网

使用刷新令牌的C#sharp身份验证的Google.api客户端

使用刷新令牌的C#sharp身份验证的Google.api客户端,c#,oauth-2.0,google-api,google-api-dotnet-client,C#,Oauth 2.0,Google Api,Google Api Dotnet Client,我正在使用新的.NET测试版Google API客户端库来加载多个用户的任务列表。它被归类为“已安装应用程序”(根据谷歌开发控制台),拥有多个授权用户帐户。对一个用户进行身份验证(使用google.api)非常简单,但我不知道如何使用刷新令牌进行身份验证,以及如何使用此令牌获取服务对象 示例代码: var credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(G

我正在使用新的.NET测试版Google API客户端库来加载多个用户的任务列表。它被归类为“已安装应用程序”(根据谷歌开发控制台),拥有多个授权用户帐户。对一个用户进行身份验证(使用google.api)非常简单,但我不知道如何使用刷新令牌进行身份验证,以及如何使用此令牌获取服务对象

示例代码:

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

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

我已经在以下线程中回答了这个问题:


希望它也能对您有所帮助。

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

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

在此之后,凭证将具有
credential.Token.AccessToken
credential.Token.refreshtToken
刷新的此凭证的可能副本是否会更新FileDataStore对象?与其他答案相比,您的建议似乎非常简单。
GoogleCredential.FromAccessToken
没有
RefreshTokenAsync