3

我正在尝试将文件上传到我的 Google Drive 文件空间,并且我正在使用以下代码:

var httpRequest = new XMLHttpRequest();
var url_goto = "https://www.googleapis.com/upload/drive/v2/files?uploadType=media";

httpRequest.onreadystatechange = function() {
    if (httpRequest.readyState==4 && httpRequest.status==200) {
        Firebug.Console.log(httpRequest.responseText);

    } else if (httpRequest.readyState==4 && httpRequest.status==401) {
        Firebug.Console.log(httpRequest.responseText);
    } else {
        Firebug.Console.log('Other status: ' + httpRequest.readyState + ', ' + httpRequest.status);
    }

};
var s = 'Test string';
httpRequest.open('POST', url_goto, true);
httpRequest.setRequestHeader('Content-Type', 'text/plain');
httpRequest.setRequestHeader('Content-Length', s.length);
httpRequest.setRequestHeader('Authorization', 'MY_AUTH_KEY');
httpRequest.send(s);

问题是我有以下输出:

"Other status: 1, 0"
"Other status: 1, 0"
"Other status: 2, 401"
"Other status: 3, 401"

...并引发异常:

"{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}"

谁能帮我理解为什么身份验证不起作用?我正在使用从我的 Google API 控制台检索到的 API 密钥,在简单 API 访问部分下。

谢谢!

4

1 回答 1

3

如果您使用的是 oauth2 令牌,那么您必须在 Authorization 标头中指定 Bear 以及 auth 令牌,例如

httpRequest.setRequestHeader("授权", "承载 MY_AUTH_KEY");

于 2013-08-28T15:43:52.863 回答