Android / c2dm:403在尝试获取Auth令牌时禁止,并且没有来自Google的错误消息

时间:2011-12-04 12:46:33

标签: android push android-c2dm

我知道这个问题已在SO多次询问过。但是我没有在我看过的主题中找到任何答案或解决方案。

我正在运行下面的代码(C#),用于使用c2dm进行身份验证。然而,我从一开始就一直得到403 Forbidden。

当我尝试做的时候会发生什么:

WebResponse response = request.GetResponse();

它抛出一个WebException。当我在那里调查WebException和响应对象时,我看不到来自Google的任何错误消息,即使Google的文档说它应该说明为什么我会得到403.但是我看到的只是“403 Forbidden”。

我使用的帐户已注册使用C2DM。

我很欣赏一些输入=)

WebRequest request = WebRequest.Create(GoogleAuthUrl);
request.Method = PostWebRequest;

NameValueCollection postFieldNameValue = new NameValueCollection();
postFieldNameValue.Add("Email", "my.email@gmail.com");
postFieldNameValue.Add("Passwd", "mypassword");
postFieldNameValue.Add("accountType", "GOOGLE");
postFieldNameValue.Add("source", "SomeRandomString");
postFieldNameValue.Add("service", "ac2dm");

string postData = GetPostStringFrom(postFieldNameValue);
byte[] byteArray = Encoding.UTF8.GetBytes(postData);

request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;

Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

WebResponse response = request.GetResponse();
if (((HttpWebResponse)response).StatusCode.Equals(HttpStatusCode.OK))
{
    dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);

    string responseFromServer = reader.ReadToEnd();

    authTokenString = ParseForAuthTokenKey(responseFromServer);

    reader.Close();
    dataStream.Close();
}
else
{
    Console.WriteLine("Response from web service not OK :");
    Console.WriteLine(((HttpWebResponse)response).StatusDescription);
}

0 个答案:

没有答案