Мне известно, что этот вопрос задавался несколько раз здесь, в 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);
}