Android C2DM获取(401)未经授权

4
我有一个带有ASP.NET后端的安卓应用程序。我已经获取了该手机的registration_id以及Google为应用服务器提供的auth token,用于执行推送。
当我向C2DM发出HTTP POST请求,以便手机接收到消息时,我不断收到401未经授权的错误。以下是我在.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();

任何帮助都将不胜感激。

我猜可能是我在处理授权头时出了问题,但我在网上找不到这个服务的任何示例头。 - Matt Wear
或许我没有正确编码我的头部?我真的认为这与授权头有关。 - Matt Wear
你能分享一些使用.NET获取OAuth令牌的代码吗? - katit
3个回答

4

建议角落:偶尔对自己的代码要有信心!即使是谷歌有时也会出错。

在花费了大约九个小时阅读关于Google OAuth和C2DM的每篇博客文章并尝试在我的代码中尝试不同的东西后,我给Google发送了电子邮件。我很高兴地说,我不仅很快收到了回复,而且我的账户出了问题。当我在他们的网站上注册时出了问题,虽然从我收到的注册成功电子邮件来看似乎一切正常,但实际上并不是这样。我重新注册了一下,现在一切都正常了!


如何“向Google发送电子邮件”? 什么地址? - Frank LaRosa

2
我遇到了一个类似的问题:在尝试使用Google C2DM(云到设备消息)代码示例时出现错误401“未授权”。看起来这个示例曾经可以直接使用,但现在Google已经更改了条件。在运行代码示例之前,您必须注册:http://code.google.com/android/c2dm/signup.html。我注册后,几分钟内就开始工作了。

0

我遇到了同样的问题,即我的C2DM_ACCOUNT_EMAIL突然停止工作。

为了解决这个问题,只需要再次使用相同的信息和相同的C2DM_ACCOUNT_EMAIL填写注册表格。

希望对你有所帮助。


这篇帖子有点旧了,所以我有点难记得清楚:但是,我想当我给谷歌发邮件时,他们对我的账户做了一些处理,让我重新注册后它就可以正常工作了。 - Matt Wear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接