11

注:時間をかけて読む前に、C2DM自体は現在非推奨であり、GCM(http://developer.android.com/guide/google/gcm/c2dm.html)に置き換えられていることを知っておいてください。

-元の質問-

C2DMを使用してAndroidデバイスにメッセージをプッシュするPHPサーバー側コードを実装するためのサンプルコードはありますか?

非推奨の古い認証方法ClientLoginを使用している多くのコードサンプルを検索しました。参照:https ://developers.google.com/accounts/docs/AuthForInstalledApps(重要:ClientLoginは2012年4月20日をもって正式に廃止されました。引き続き廃止ポリシーに従って機能しますが、に移行することをお勧めします。できるだけ早くOAuth2.0。)

4

3 に答える 3

4

https://developers.google.com/accounts/docs/AuthForInstalledAppsが表示されている場合は、ホストされたアカウントであるため、C2DM には適用されません。

ClientLogin を使用して、Google の通常のアカウントとホストされたアカウントの両方へのアクセスを承認できます。ホステッド アカウントは、Google Apps サービスの一部であるユーザー アカウントです。

また、CAPTCHA が含まれているため、グラフィックが UI インターフェイスとしてのユーザー間の明確な相互作用であることがわかります。

ここに画像の説明を入力

編集

ところで、この投稿からわかるように、C2DM メカニズムは引き続き ClientLogin を使用しますが、2011 年 10 月より前のキーは期限切れになるため、それらを再作成する必要があります。これは、ClientLogin が廃止される 8 日前のかなり最近の投稿です。C2DM クライアント ログイン キー

于 2012-05-08T09:51:52.633 に答える
2

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 に置き換えられることを願っています。

于 2012-05-04T08:17:31.723 に答える
0

ここ

あなたは見てみることができます、それは私のために働いた.

デバイスの登録 ID を取得し、c2d アカウントのメール アドレスとパスワードを post.php に入力する必要があります。

もう 1 つ知っておく必要があるのは、c2dm.php についてです。サーバーの応答を "200 OK" としてチェックアウトしようとすると、エラーが発生します。体からこの反応を得ようとしているからです。その中の行にコメントを付けて実行するだけです。

于 2012-05-01T13:05:22.337 に答える