2010-09-20 124 views
4

我有一個帶有ASP.NET後端的Android應用程序。我有電話的registration_id以及正在執行推送的應用程序服務器的谷歌身份驗證令牌。Android C2DM獲取(401)未授權

當我發送到C2DM的http post請求,以便手機得到一條消息時,我總是得到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頭錯了,但我無法找到此服務的所有例子頭在線。 – 2010-09-20 16:53:55

+0

或者我沒有正確編碼我的標題?我真的認爲這與授權標題有關。 – 2010-09-20 19:20:15

+0

您可以分享一些關於如何使用.NET獲取OAuth令牌的代碼嗎? – katit 2012-06-02 01:58:46

回答

4

建議角:每隔一段時間對代碼有一定的信心!而且,即使谷歌有時也會搞砸。

我花了大約9個小時閱讀關於Google OAuth和C2DM的每篇博文和文章,並嘗試使用我的代碼中的不同內容後,我向Google發送了一封電子郵件。我很高興地說,我不僅得到了很快的回覆,而且我的賬戶也被搞砸了。當我在他們的網站上註冊時,出現了一些問題,儘管從我收到的註冊成功電子郵件看來,所有事情都起作用了,但事實並非如此。我重新註冊,一切正常!

+0

如何「發郵件給Google」?什麼地址? – 2012-03-21 19:31:34

2

我遇到了類似的問題:嘗試谷歌c2dm(雲到設備消息)代碼示例時出現錯誤401「未經授權」。它看起來就像過去那樣工作,但現在Google已經改變了它的條件。運行代碼示例之前,你必須登錄了:

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

我註冊了,和東西開始在幾分鐘內工作。

0

我有同樣的問題,即突然我的C2DM_ACCOUNT_EMAIL停止工作。

要解決該問題,只需再次填寫相同的信息和相同的C2DM_ACCOUNT_EMAIL註冊。

HTH

+0

嗯,這篇文章有點老了,所以對我來說記住一切都有點困難:但是,我想當我向Google發送電子郵件時,他們對我的帳戶做了一些事情,一旦我辭職,就會使其工作。 – 2011-06-06 19:12:02