删除已撤消的缓存Google访问令牌

时间:2013-12-11 07:08:32

标签: google-api

在我的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以删除缓存的令牌并请求新的令牌?

1 个答案:

答案 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);
        }
    }

希望它有所帮助。