【问题标题】:C2DM server. Should we use OAuth now?C2DM 服务器。我们现在应该使用 OAuth 吗?
【发布时间】:2012-06-07 05:22:42
【问题描述】:

我正在为我的 Android 应用实施 C2DM。客户端(Android)进展顺利,但我在实现服务器端时有点困惑。

我的服务器是 C#/.NET。关于身份验证,官方文档链接到 404: https://developers.google.com/android/c2dm/#handling_reg

我找到了另一个页面: https://developers.google.com/accounts/docs/AuthForInstalledApps

但它说已弃用。所以,我不知道现在该怎么办。使用已弃用的功能或学习如何使用 OAuth? (以前从未这样做过)

如果我使用 OAuth - 我应该在这里传递什么: Authorization: GoogleLogin auth=[AUTH_TOKEN]?

任何关于此主题的指针将不胜感激

Google 最近发布的帖子听起来像是客户登录是要走的路... http://android-developers.blogspot.com/2012/04/android-c2dm-client-login-key.html

【问题讨论】:

  • 啊,通过 android-developers 上的链接很好地找到了。这有助于确认我的立场,但对于我们所有人来说,这似乎也是一个很好的建议,以确保我们正确处理密钥到期。
  • 我得到了更多答案,是的,支持 OAuth! groups.google.com/forum/?fromgroups#!topic/android-c2dm/…

标签: android .net oauth android-c2dm


【解决方案1】:

我最近开始自己设置 C2DM,当我看到弃用通知时,我也有同样的困惑。我最好的理解是,虽然 Google 正在为大多数服务迁移到 OAuth 2,弃用 ClientLogin,但 C2DM 仍然使用 ClientLogin,所以在这种情况下你必须使用它。

理由:

  • (最新且经常更新的)C2DM documentation 中的所有内容都明确引用了 ClientLogin,强烈建议该服务与此特定授权方法相关联。 ClientLogin 被明确提及 11 次,而没有提及 OAuth 或任何其他可能的身份验证方式。

简而言之,我认为您必须将 ClientLogin 用于 C2DM,并且应该忽略它已被 OAuth 更好地服务的其他 Google 服务弃用的事实。在可预见的将来,除了 ClientLogin 之外的任何东西似乎都不会与 C2DM 一起使用。

【讨论】:

  • 有官方说还在使用OAuth吗? C2DM 页面上所有指向身份验证的链接都已损坏,这是一项新开发,我不想在已弃用的技术上启动它,除非 OAuth 在 C2DM 上很长时间不可用。..
  • C2DM 页面在多个位置链接到您链接到的同一页面 (AuthForInstalledApps),并且似乎很清楚 ClientLogin 是要走的路。正如您所指出的,其中几个链接已损坏,只是因为它们需要更新为新的、略有不同的 URL。
  • 我对他们俩也是新手,实施哪一个都没关系。据我了解,您在 #2 上错了,因为它们确实支持服务器的 OAuth。 developers.google.com/accounts/docs/OAuth2#serviceaccountClientLogin 2015 年会消失吗? .NET 中的 OTH OAuth 将成为 PITA,因为我必须为项目带来至少 2 个外部依赖项..
  • 另外,对于 ClientLogin,我应该使用哪个 UN/Password?我申请了 C2DM 访问权限,但只询问了发件人电子邮件...
  • 你是对的,所以我从我的答案中删除了这部分。尽管如此,显然 ClientLogin 是他们为 C2DM 考虑的全部内容。您使用设置为发件人的用户名和密码。由于您必须将其存储在您的服务器上(以便在旧令牌到期时获取新令牌),这意味着您应该为 C2DM 设置一个具有唯一密码的特殊帐户,并使用该帐户重新注册 C2DM 作为发件人。
【解决方案2】:

我认为 OAuth 2.0 是可行的方法。我第一次使用 C2DM 的 ClientLogin,但发现没有对颁发的授权码进行管理。即使我使用Google Account Authorize Access 页面撤销了访问权限,我仍然能够使用之前发布的授权码向我的设备发送消息!此外,我不喜欢将 Google 凭据存储在某处以获取授权码的想法。

OAuth 2.0 稍微复杂一些,但现在我理解了它,我发现它比 ClientLogin 优雅得多。

基本上,使用Google's OAuth 2.0 Playground 生成一个OAuth 客户端IDOAuth 客户端密码 和一个刷新令牌。这些可用于获取(刷新)在有限时间(通常为 1 小时)内有效的 Access Token。然后使用访问令牌通过 C2DM 发送消息。

我跟着this tutorial 设置了它,它就像一个魅力!

【讨论】:

    【解决方案3】:

    您看到这个 Java 示例了吗?

    http://code.google.com/p/google-api-java-client/wiki/OAuth2Draft10

    在我看来这很容易理解。

    【讨论】:

    • 2 个问题 - 我的服务器是 .NET,我不确定 OAuth 是否适用于 C2DM
    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多