1

我正在尝试学习 Google 代码网站上帐户身份验证 API 中详细介绍的 ClientLogin 接口。

我正在使用 Firefox 3.5pre (Shiretoko) 和XMLHttpRequestJavascript 中的对象来跟踪该过程。这是我所拥有的精简版:

<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 提要等。

4

2 回答 2

1

我怀疑您已经被 Javascript 的“同源”政策所困扰。它可以防止 Javascript(包括 XmlHttpRequest)从另一个域访问一个域。更多信息可从Mozilla获得。

有一些技巧可以解决这个问题,但我不知道它们是否可以与 Google 的 API 一起使用。

于 2009-10-07T13:52:11.037 回答
-1

“passwd”中的“p”是小“p”而不是大写“P”

你可能想通了。当您发布并找到答案时,如果您也发布答案总是有礼貌的。这有助于将来查看您的帖子以获取信息的人

那个“p”花了我两个小时才找到,因为我认为谷歌给出的代码是正确复制的,没有大小写错误

互联网上充满没有答案的问题毫无意义

于 2009-07-30T16:23:38.713 回答