oAuth 2.0 で C2DM を使用する方法はまだわかりませんが、ここで試してみました。これが誰かが同様の問題を解決するのに役立つことを願っています
http://aleksmaus.blogspot.com/2012/01/oauth2-with-google-c2dm-push.htmlで役立つリソースを見つけましたが、
OAuth 2.0 を介して C2DM でメッセージを送信しようとすると、送信されませんでした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: (失敗)
次の URL にアクセスして、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
(Google 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エラー応答を取得しました:(
私が何か間違ったことをしたことを指摘できる人はいますか?
編集
C2DM の登録時に Google から送信される可能性があるメールの中に、「AC2DM は現在 Labs の API です」という文が見つかりました。また、
ClientLogin の非推奨ポリシーは、「実験的」とラベル付けされたバージョン、機能、および機能には適用されません。よくわかりませんが、これが私たちのコードが機能しなかった理由だと思います。
もちろん、ClientLogin も廃止され、OAuth 2.0 に置き換えられることを願っています。