Windows phone 8 Google api dot net客户端中的Google oauth api注销问题

Windows phone 8 Google api dot net客户端中的Google oauth api注销问题,windows-phone-8,youtube-api,google-api-dotnet-client,Windows Phone 8,Youtube Api,Google Api Dotnet Client,我正在使用“Google.API.YouTube.v3客户端库1.8.1.1050”Nuget软件包访问WindowsPhone8中的API。我能够使用这个API成功地完成登录功能。我只能使用经过验证的Google帐户详细信息登录,才能在YouTube API v3上执行某些操作。我还可以使用这个API从Youtube获取所有提要。现在,我在使用GoogleAPIv3OAuth2时面临一个问题。 我使用以下代码使用Google帐户登录: UserCredential credential; us

我正在使用“Google.API.YouTube.v3客户端库1.8.1.1050”Nuget软件包访问WindowsPhone8中的API。我能够使用这个API成功地完成登录功能。我只能使用经过验证的Google帐户详细信息登录,才能在YouTube API v3上执行某些操作。我还可以使用这个API从Youtube获取所有提要。现在,我在使用GoogleAPIv3OAuth2时面临一个问题。 我使用以下代码使用Google帐户登录:

UserCredential credential;
using (var stream = new FileStream("clientdata.json", FileMode.Open, FileAccess.Read)){

    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
    GoogleClientSecrets.Load(stream).Secrets,
    // This OAuth 2.0 access scope allows for read-only access to the authenticated 
    // user's account, but not other types of account access.
    new[] { YouTubeService.Scope.Youtubepartner },
    "user",
    CancellationToken.None);}
使用此代码,我可以成功登录并获得所有提要。但是现在我的问题是如何使用Google API v3从Windows Phone 8应用程序中注销?据我所知,此软件包中没有清除用户凭据的方法。 现在,我正在呼叫一个Web服务

{访问令牌}

撤销当前的访问令牌,但这没有多大帮助

如果我能得到任何帮助来解决这个问题,那就太好了。如果需要更正,请告诉我。 如果有人能提供有关如何在Windows Phone中高效使用此API的文档或示例,那就更好了


提前感谢

您必须在注销用户后清除cookies。要注销用户,SDK中没有任何内置函数。因此,请尝试以下代码作为注销函数

private async void logout(object sender, System.Windows.Input.GestureEventArgs e)
{
    WebBrowser wb = new WebBrowser();
    var url = "http://accounts.google.com/Logout";
    wb.Navigate(new Uri(url, UriKind.RelativeOrAbsolute));
    await wb.ClearCookiesAsync();
}

首先,我在我们的问题跟踪器中为这个问题创建了一个新问题:,希望它能在下一个版本中得到修复

还请解释为什么“这没有多大帮助”


现在,请尝试调用您提到的revoke方法。此外(目前…),我建议创建一个新的UserCredential(使用不同的“用户”)和一个新的服务,并让我知道它是否工作

从隔离存储中删除Google Authentication Library调用创建的文件。使用Microsoft windows phone工具查找该文件的名称。对于Windows phone应用程序,它很可能是“Google.api.Auth.OAuth2.Responses.TokenResponse user”


在UserCredential对象上,您现在可以调用

await myUserCredential.RevokeTokenAsync(null);
这将删除用户令牌,他将被要求再次授权

或者有RESTAPI


嗨,Rohit,我也在做同样的事情,但我在讨论中提到的那行代码仍在返回凭证和访问令牌。@DotNet Weblineindia是否确实需要将访问令牌作为GET参数发送…我确信这违反了安全性,也不安全…您是否尝试过同样的POST请求?另外,注销用户将撤消访问令牌。那你为什么要手动操作呢?我几乎尝试了所有可能的方法。当我手动执行此操作时,它将撤销访问令牌,但我需要关闭我的应用程序。当我重新启动并尝试登录时,应用程序再次询问登录的用户详细信息。但我不想关闭应用程序。我需要灵活的登录/注销功能。在再次登录之前,请清除web浏览器cookies…我正在做同样的事情,无需关闭我的应用程序即可再次登录。请参考我再次建议的注销方法。这就是答案。RevokeTokentAsync不接受空参数,因此需要是
credential.RevokeTokentAsync(新的CancellationToken())。我的答案差不多有两年了,所以新的API版本可能有变化?但它仍然可以在我的旧应用程序中使用null
await myUserCredential.RevokeTokenAsync(null);
https://accounts.google.com/o/oauth2/revoke?token={token}