Google.Apis client for C#sharp auth using refresh token

牧云@^-^@ 提交于 2019-12-04 02:04:06

问题


I'm using new beta Google APIs Client Library for .NET to load tasks lists of more than one user. It's classified as "installed aplication" (according to google dev. console) with more than one authorized user accounts. It's really simple to authenticate one user (using google.apis) but I cannot figure out, how to do the same with refresh tokens, and how to use this tokens to get service object.

Sample code:

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

I want to construct object credential using refresh token, but I'm really lost and cannot find any appropriate documentation.


回答1:


You can check if the current Token is expired and Refresh using the code below:

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

After that the credential has the credential.Token.AccessToken and credential.Token.RefreshToken refreshed




回答2:


I already answer to that one in the following thread: .NET Google api 1.7 beta authenticating with refresh token

Hope it will be helpful for you as well.



来源:https://stackoverflow.com/questions/22357348/google-apis-client-for-csharp-auth-using-refresh-token

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!