私は(唯一のカールで)それを試してみましょう:
最初に私たちが認証トークンを申請している:
:
curl.exe -v -k https://www.google.com/accounts/ClientLogin -d [email protected] -d Passwd=secret -d accountType=GOOGLE -d source=your.registered.domain -d service=ac2dm
結果では、あなたは、認証トークンを受けています
< HTTP/1.1 200 OK
SID=XXX
LSID=XXX
Auth=XXX
* Connection #0 to host www.google.com left intact
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
Auth応答の結果は大文字で始まります。「Auth = XXバツ"!
今、私たちは次の要求を結果を用いますが、小文字の最初の文字とされています
curl.exe -v -k --header "Authorization: GoogleLogin auth=XXX" https://android.apis.google.com/c2dm/send -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z
そして、この作品!
curl.exe" -v -k --header "Authorization: GoogleLogin Auth=XXX" https://android.apis.google.com/c2dm/send -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z
だから、リクエスト2の「認証」は大文字と小文字が区別されます:あなたが最初の応答(「認証」の大文字のA)のように認証を使用している場合しかし、あなたは、401エラーを取得しています。私はこれがユーザーの50%が踏み込んでいる落とし穴だと思う。希望が役立ちます。
奇妙なことは、私はc2dmのために登録されていなかった私の電子メールの認証トークンを取得しようとしたときに、私も認証トークンを取得します。だから私は、メッセージを送信するために使用される私の認証トークンが間違っている必要があります。 – DixieFlatline
私も同じ問題を抱えています。 C2DMのAndroidアプリ登録がユーザートークンをWebサーバーに送信すると、WebサーバーはC2DMから認証トークンを取得し、プッシュ通知を登録されたアプリケーションに送信し、取得するのは401エラーです。たぶん、C2DMサービスに問題があります。おそらくあまり信頼性がありませんか? – jamesc