Android / c2dm: 403 Запрещено при попытке получить токен авторизации и отсутствие сообщения об ошибке от Google - PullRequest
0 голосов
/ 04 декабря 2011

Мне известно, что этот вопрос задавался несколько раз здесь, в SO.Однако я не нашел ответа или решения какого-либо рода в потоках, на которые я смотрел.

Я запускаю приведенный ниже код (C #) для аутентификации с помощью c2dm.Я, однако, получаю 403 Запрещено с самого начала и всегда.

Что происходит, когда я пытаюсь сделать:

WebResponse response = request.GetResponse();

, это вызывает исключение WebException.Когда я изучаю исключение WebException и объект ответа, я не вижу ни одного сообщения об ошибке от Google, хотя в документации Google говорится, что в нем должно быть указано, почему я получаю 403. Однако я ничего не вижу, просто «403 Запрещено».

Используемая мной учетная запись зарегистрирована для использования 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);
}
...