【问题标题】:Google apis sdk for windows phone store app适用于 windows phone 商店应用程序的 Google apis sdk
【发布时间】:2015-01-11 09:44:08
【问题描述】:

我已经开发了windows phone store 应用并集成了google login,没有使用Google.Apis sdk。

我使用了 WebAuthenticationBroker,它工作正常。

更新 1:

现在我正在尝试探索更新的 Google.Apis SDK 以进行 google 集成以进行登录。

我可以使用这个进入谷歌登录屏幕:

credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
                new Uri("ms-appx:///Assets/client_secrets.json"),
                new[] { "openid", "email" , "profile"},
                "user",
                CancellationToken.None);

并且在 webAuthenticationResult 中获得包含code 的响应需要进一步。

但是,为了进一步使用它,我需要知道它提供的所有 API,除了 GoogleWebAuthorizationBroker.AuthorizeAsync,是否有任何 API 文档 您解释了 Blogger/Drive API,但没有说明访问令牌到期处理 API 的正常登录流程需求。

如果您能抽出时间并指导我如何使用此 SDK 进行第二次应用启动、使用刷新令牌处理令牌到期,我将非常感谢您,因为我看到每次使用时都会导航到登录页面GoogleWebAuthorizationBroker.AuthorizeAsync.

我们应该处理所有这些场景还是 SDK 会处理它?

非常感谢 Peleyal 的任何帮助。 谢谢。

【问题讨论】:

  • 我不太明白这个问题。您可以在以下位置查看 Universal 的完整版示例,网址为:code.google.com/p/google-api-dotnet-client/source/browse/…
  • 感谢 peleyal 的回复。我已经检查了 Blogger 示例,因为应用程序是通用的,所以客户端机密 json 文件的加载是在共享代码中完成的。我只做windows phone store 应用程序,不能用你做的方式形成uri。在博客示例中也获得了聚合异常。
  • 它应该可以工作。确保将文件添加为内容并将其复制到 VS 属性中。添加您的确切代码和确切的汇总异常,以便我和其他用户能够提供帮助。

标签: windows-runtime google-api windows-store-apps windows-phone-8.1 google-api-dotnet-client


【解决方案1】:

我今天早些时候刚刚更新了文档,其中包含了一个在 Windows Phone 8.1 应用程序中使用 OAuth 2.0 的简短教程。

看一看:https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#wp81

更新:

值得一提的是,作为 Google Apis Auth 库的一部分,在获取授权码时,应用会将其替换为刷新和访问令牌。
访问令牌将使用刷新令牌自动刷新,您可以在以下位置找到:https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#credentials

更新 2:
按照说明,我发现流程让我们的一些用户感到困惑(我会尽快更新文档),我想在这里澄清一下:

  • 在您第一次需要访问 Google API 时,您应该调用 GetFilesAsync(或访问文件\视频\博客或您正在使用的任何 API 的其他一些函数)。
    这最终将导致调用 GoogleWebAuthorizationBroker.AuthorizeAsync。 实现检查是否已经有访问和刷新令牌,因为没有,它继续检查授权代码是否使用 SerializableWebAuthResult.Name 保存在数据存储中。情况并非如此,因此它启动了暂停当前应用并打开登录窗口的授权流程。

  • 再次激活应用后,我们调用延续管理器继续流程(文档中的步骤 5),然后调用 ContinueWebAuthentication(步骤 6)。
    ContinueWebAuthentication 存储我们刚刚收到的授权代码并再次调用 GetFilesAsync。这次数据存储中存在授权代码,因此 AuthorizeAsync 方法将其交换为访问和刷新令牌并将它们存储在数据存储中。然后由开发人员负责从数据存储中删除授权代码(使用 SerializableWebAuthResult.Name 键。此步骤将来可能会简化)。

  • 请注意,此时,访问令牌和刷新令牌已存储,因此以后对 GetFilesAuthorizeAsync 的任何调用都将导致从数据存储中检索令牌并检查访问令牌是否仍然有效,如果不是 - 库将使用刷新令牌自动为您刷新它。

希望它能让流程更清晰,随时添加更多的 cmets,所以我会尽量让这个流程尽可能清晰。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多