Ошибка c2dm 401 при отправке сообщений после получения идентификатора и токена авторизации - PullRequest
8 голосов
/ 03 октября 2011

Я видел много похожих вопросов, но не получил хорошего ответа, несмотря на то, что некоторые из них были приняты.Я зарегистрировался для C2DM.Я получил подтверждение по электронной почте.Затем я написал простое приложение для регистрации в C2DM.Я получаю идентификатор (пробовал на эмуляторе и на реальном устройстве).Затем я получил токен аутентификации (с curl) для своего электронного письма, которое я использовал для регистрации C2DM (то же самое электронное письмо, которое я использую в приложении для получения идентификатора).
Когда я пытаюсь сделать push (также с curl),Я получаю ошибку 401 (например, неверный токен аутентификации).

Я прочитал много уроков и у меня заканчиваются идеи.

Ответы [ 2 ]

1 голос
/ 14 октября 2011

Позвольте мне попробовать (только с curl):

Сначала мы подаем заявку на токен авторизации:

curl.exe -v -k <a href="https://www.google.com/accounts/ClientLogin" rel="nofollow">https://www.google.com/accounts/ClientLogin</a> -d Email=xyz@gmail.com -d Passwd=secret -d accountType=GOOGLE -d source=your.registered.domain -d service=ac2dm

В результате вы получаететокен аутентификации:

< HTTP/1.1 200 OK<br> SID=XXX<br> LSID=XXX<br> Auth=XXX<br> * Connection #0 to host www.google.com left intact<br> * Closing connection #0<br> * SSLv3, TLS alert, Client hello (1):

Обратите внимание, что ответ Auth находится в результате с заглавной первой буквой: "Auth = XXX"!

Теперь мыиспользуя результат для следующего запроса, но с заглавной первой буквой:
curl.exe -v -k --header "Authorization: GoogleLogin <strong>auth</strong>=XXX" <a href="https://android.apis.google.com/c2dm/send" rel="nofollow">https://android.apis.google.com/c2dm/send</a> -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z

И это работает!Но вы получаете ошибку 401, если вы используете аутентификацию, как в первом ответе (верхний регистр A в «аутентификации»):

curl.exe" -v -k --header "Authorization: GoogleLogin <strong>Auth</strong>=XXX" <a href="https://android.apis.google.com/c2dm/send" rel="nofollow">https://android.apis.google.com/c2dm/send</a> -d "registration_id=XXX" -d "data=helloooo" -d collapse_key=Z

Таким образом, «аутентификация»запрос 2 чувствителен к регистру.Я думаю, что это ловушка, в которую входят 50% пользователей.Надеюсь, это поможет.

0 голосов
/ 04 декабря 2011

Может в этом проблема?

http://groups.google.com/group/vogella/browse_thread/thread/95865344e6d2c734

По сути, параметр «отправитель», который вы указываете на устройстве Android, должен быть тем же адресом электронной почты, который зарегистрирован как отправитель (на стороне сервера).

...