Использование Google ClientLogin Interface через XMLHttpRequest в Javascript - PullRequest
1 голос
/ 30 мая 2009

Я пытаюсь изучить интерфейс ClientLogin, подробно описанный в API аутентификации учетной записи на веб-сайте кода Google.

Я использую Firefox 3.5pre (Shiretoko) и XMLHttpRequest объект в Javascript, чтобы следить за процессом. Вот урезанная версия того, что у меня есть:

<html>
<head>
<title>Test</title>
<script type="text/javascript">
  //<![CDATA[
function update() {
  var auth_params = "accountType=HOSTED_OR_GOOGLE&Email=val"
                    +"&passwd=val&service=cl&source=MMA-Learning";
  var request = new XMLHttpRequest();

  request.open('POST', 'https://www.google.com/accounts/ClientLogin', true);

  request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  request.setRequestHeader("Content-Length", auth_params.length);
  request.setRequestHeader("Connection", "close");

  request.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      alert ("Request done");
    }
  };

  try {
    request.send( auth_params );
  } catch (e) {
    alert ("Send Exception:\n"+e);
  }
}
  //]]>
</script>
</head>
<body>
  <a href="javascript:update()">Authenticate</a>
</body>
</html>

Когда я нажимаю на ссылку Authenticate , я получаю ответ Bad Request. Изучая заголовки запроса, я не вижу, Content-Type установлен на application/x-www-form-urlencoded.

Я использую Firebug 1.5X для проверки трафика.

Пока все, что я хочу сделать, это сгенерировать запрос, упомянутый в разделе Пример запроса , и получить ответ, упомянутый в разделе Пример ответа . Если я туда попаду, я хочу получить некоторые данные, относящиеся к аккаунту, такие как непрочитанные каналы Google Reader и т. Д.

Ответы [ 2 ]

1 голос
/ 07 октября 2009

Я подозреваю, что вы были укушены политикой Javascript "того же происхождения". Это предотвращает доступ Javascript, включая XmlHttpRequest, к одному домену из другого. Более подробная информация доступна от Mozilla .

Есть обходные пути, но я понятия не имею, будут ли они работать с API Google.

0 голосов
/ 30 июля 2009

«p» в «passwd» - это маленький «p» вместо заглавной «P»

Вы, наверное, это поняли. Когда вы публикуете и находите ответ, всегда вежливо, если вы также публикуете ответ. Это поможет людям в будущем, которые будут смотреть на ваш пост для информации

Это 'p' заняло у меня два часа, потому что я понял, что код, который дал Google, был скопирован правильно, и не было ошибок в регистре

нет смысла в Интернете быть полным вопросов без ответов

...