C2DM服务器。我们现在应该使用OAuth吗?

时间:2012-06-02 01:55:47

标签: android .net oauth android-c2dm

我正在为我的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

3 个答案:

答案 0 :(得分:3)

我最近开始自己设置C2DM,当我看到弃用通知时,我遇到了同样的困惑。我最好的理解是,虽然Google正在转向OAuth 2以获取大多数服务,但弃用ClientLogin,C2DM仍然使用ClientLogin,因此在这种情况下您必须使用它。

理由:

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

简而言之,我认为您必须将ClientLogin用于C2DM,并且应该忽略这样一个事实,即OAuth更好地服务的其他Google服务不推荐使用它。在可预见的将来,除了ClientLogin以外的任何其他内容似乎都不会与C2DM一起使用。

答案 1 :(得分:2)

我认为OAuth 2.0是要走的路。我首先使用ClientLogin进行C2DM,但发现没有已发布授权码的管理。即使我使用Google Account Authorize Access页面撤销访问权限,我仍然可以使用之前发出的授权码向我的设备发送消息!此外,我不喜欢在某处存储Google凭据以获取授权码的想法。

OAuth 2.0稍微复杂一点,但现在我明白了,我发现它比ClientLogin更优雅。

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

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

答案 2 :(得分:0)

您是否看到了这个Java示例?

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

我认为这很容易理解。