在我的c#桌面应用中,我使用Google的API来验证和检索API的访问令牌。我注意到API将缓存此令牌并再次使用它,直到它过期。
使用我的浏览器,我可以使用以下方式撤销令牌:
https://accounts.google.com/o/oauth2/revoke?token=1/xxxxxxx
我这样做是为了测试API如何处理撤销的令牌。正如所预期的那样,API失败了。我遇到的问题是让API使用新令牌。它继续检索缓存的令牌,即使它已被撤销。以下代码用于验证API的使用:
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None);
如何获取API以删除缓存的令牌并请求新的令牌?
答案 0 :(得分:1)
您必须在获取新令牌之前注销。您可以在此处阅读有关OAuth 2.0 https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth?hl=uk的信息。 下面我为我的Windows Phone 8应用程序做了这个:
var string const GoogleTokenFileName =“Google.Apis.Auth.OAuth2.Responses.TokenResponse-user”
public async Task LoginAsync()
{
await Logout();
_credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
{
ClientId = _xmlfile.GoogleClientId,
ClientSecret = _xmlfile.GoogleClientSecret
}, new[] { Oauth2Service.Scope.UserinfoProfile }, "user", CancellationToken.None);
return session;
}
public async Task Logout()
{
await new WebBrowser().ClearCookiesAsync();
if (_storageService.FileExists(GoogleTokenFileName))
{
_storageService.DeleteFile(GoogleTokenFileName);
}
}
希望它有所帮助。