2010-09-20 3 views
4

У меня есть приложение для Android с бэкэнд ASP.NET. У меня есть registration_id для телефона, а также токен аутентификации из Google для сервера приложений, который выполняет push.Android C2DM получение (401) Неавторизованный

Когда я делаю запрос на отправку 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(); 

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

+0

Я предполагаю, что я чувствую, что, может быть, я делаю заголовок Authorization неправильно, но я не могу найти ни одного примера заголовки для этой службы в Интернете. –

+0

Или, может быть, я не правильно кодирую заголовок? Я действительно думаю, что это как-то связано с заголовком авторизации. –

+0

Можете ли вы поделиться некоторым кодом о том, как вы получаете токен OAuth, используя .NET? – katit

ответ

4

Угол консультации: некоторое время доверяйте своему коду! И даже иногда Google разваливается.

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

+0

Как «отправить электронную почту Google»? Какой адрес? –

2

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

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

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

0

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

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

НТН

+0

Ну, этот пост добрый, поэтому мне немного сложно запомнить все: но, я думаю, когда я отправлял по электронной почте Google, они что-то делали в моей учетной записи, что заставило его работать, как только я ушел в отставку. –

Смежные вопросы