C2DM与PHP中使用的OAuth2.0(ClientLogin的已过时!)(C2DM with P

2019-07-29 04:21发布

注意:您花时间阅读之前,请知道的C2DM本身现在已经过时,并通过GCM取代(http://developer.android.com/guide/google/gcm/c2dm.html)

- 原来的问题 -

我们是否有执行PHP服务器端代码将消息传递到使用C2DM的Android设备的示例代码?

我已经寻找它正在使用它被废弃了旧的认证方法ClientLogin的许多代码示例。 参考: https://developers.google.com/accounts/docs/AuthForInstalledApps (重要提示:ClientLogin的已被正式弃用4月20日,2012年将继续按照我们的弃用政策的工作,但我们建议您迁移到的OAuth 2.0尽快。)

Answer 1:

这不符合C2DM适用,因为是托管accountif看到https://developers.google.com/accounts/docs/AuthForInstalledApps它甾体抗炎药

ClientLogin的可以用来授权访问谷歌都定期和托管帐户。 托管的帐户是是谷歌企业应用套件服务的一部分的用户帐户。

另外,如果你看到图形是作为UI界面用户之间的互动清楚因为CAPTCHA是参与。

编辑

顺便说一句,你可以从这篇文章C2DM机制仍然将是使用ClientLogin但2011年10月之前将要到期的关键,所以您需要重新创建他们看。 这是8天相当最近的文章中被弃用的ClientLogin之前。 C2DM客户端登录键



Answer 2:

我无法弄清楚如何使用C2DM使用OAuth 2.0还没有但这里是我试过。 希望这能帮助别人解决类似的问题

我发现,这将是在有用的资源http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.html但是,当我试图用C2DM发送消息通过OAuth 2.0用户事与愿违工作而没有使用ClientLogin一个好工作。

这是我怎么没带控制台和Web浏览器(我知道,你问PHP实现。但我希望这也能对你有所帮助)


客户端登录:(成功)

有身份验证令牌来自:

$ curl -k -d "accountType=HOSTED_OR_GOOGLE&service=ac2dm&source=test-1.0&Email=[email account with @gmail.com without brace]&Passwd=[Google account password without brace]" https://www.google.com/accounts/ClientLogin 

并派出C2DM消息是这样的:

$ curl -k --header "Authorization: GoogleLogin auth=[my ClientLogin auth key without brace]" -d "registration_id=[can be acquired from Android application]" --trace c2dm_trace.txt -d collapse_key=0 https://android.apis.google.com/c2dm/send

然后,我的应用程序成功接收C2DM消息


OAUTH 2.0:(失败)

得到了来自Web浏览器的OAuth 2.0身份验证凭据通过访问网址:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=[can be acquired from API Access menu in your API Console]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https%3A%2F%2Fandroid.apis.google.com%2Fc2dm&access_type=offline

(谷歌API控制台: https://code.google.com/apis/console/ )

并派出这样的:

$ curl -k -H "Authorization: Bearer [my auth key from oAuth]" --trace curl_trace.txt -d "registration_id=[an be acquired from Android application]" -d "data.message=something to talk" -d collapse_key=0 https://android.apis.google.com/c2dm/send

然后得到401错误响应 :(


是否有任何人谁可以指出我做错了什么?

编辑

我发现了一句“AC2DM目前在实验室的API”中,你可能会从谷歌注册C2DM当收到邮件。 和ClientLogin的弃用政策并不适用于型,特征和功能标记为“实验”。 我不知道,但我想这就是为什么我们的代码没有工作。

当然,我希望的ClientLogin也被淘汰,并使用OAuth 2.0尽快更换



Answer 3:

这里

你可以去看看,它为我工作。

你需要让你的设备registrationId,并输入您的C2DM帐户的电子邮件地址和密码post.php中。

而你需要知道的另一件事是关于c2dm.php,有一个错误,当它试图检查服务器的响应为“200 OK”的发生。 因为它试图从身体这个反应。 只需简单地在评论这行,然后运行。



文章来源: C2DM with PHP using OAuth2.0 (ClientLogin is deprecated!)