Android C2DM получает (401) Несанкционированный - PullRequest
4 голосов
/ 20 сентября 2010

У меня есть приложение Android с бэкэндом ASP.NET.У меня есть регистрационный_идентификатор для телефона, а также токен авторизации от Google для сервера приложений, выполняющего push.

Когда я отправляю http-запрос на C2DM, чтобы телефон получил сообщение, я продолжаю получать 401 Unauthorized.Вот как я делаю запрос в .NET:

    WebRequest myRequest = WebRequest.Create("https://android.apis.google.com/c2dm/send");
    myRequest.ContentType = "application/x-www-form-urlencoded";
    myRequest.Method = "POST";
    myRequest.Headers.Add("Authorization", "GoogleLogin auth=" + authId);
    // buiold the post string
    StringBuilder myPost = new StringBuilder();
    myPost.AppendFormat("registration_id={0}", regId);
    myPost.AppendFormat("&data.payload={0}", msg);
    myPost.AppendFormat("&collapse_key={0}", colKey);

    // write the post-string as a byte array
    byte[] myData = ASCIIEncoding.ASCII.GetBytes(myPost.ToString());
    myRequest.ContentLength = myData.Length;
    Stream myStream = myRequest.GetRequestStream();
    myStream.Write(myData, 0, myData.Length);
    myStream.Close();
    // Do the actual request and read the response stream
    WebResponse myResponse = myRequest.GetResponse();
    Stream myResponseStream = myResponse.GetResponseStream();
    StreamReader myResponseReader = new StreamReader(myResponseStream);
    string strResponse = myResponseReader.ReadToEnd();
    myResponseReader.Close();
    myResponseStream.Close();

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

4 голосов
/ 22 сентября 2010

Советы: время от времени доверяйте своему коду!И даже Google иногда портится.

Потратив около девяти часов на чтение каждого поста в блоге и статьи о Google OAuth и C2DM и пробуя разные вещи в моем коде, я написал Google по электронной почте.Я рад сообщить, что я не только получил ответ очень быстро, но и что мой аккаунт был испорчен.Что-то пошло не так, когда я регистрировался на их сайте, и, хотя казалось, что все работало с полученного мной электронного письма с успешной регистрацией, это не так.Я перерегистрировался и все работает!

2 голосов
/ 16 мая 2011

Я столкнулся с похожей проблемой: ошибка 401 «Неавторизовано» при попытке попробовать пример кода Google c2dm (передача сообщений с устройства на облако).Похоже, этот пример работал, как есть, но теперь Google изменил свои условия.Прежде чем запускать примеры кода, вы должны зарегистрироваться:

http://code.google.com/android/c2dm/signup.html

Я зарегистрировался, и все стало работать через несколько минут.

0 голосов
/ 05 июня 2011

У меня та же проблема, т.е. внезапно мой C2DM_ACCOUNT_EMAIL перестал работать.

Чтобы решить проблему, просто заполните регистрацию снова с той же информацией и тем же C2DM_ACCOUNT_EMAIL.

HTH

...