Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX GMAIL API调用授权错误_Javascript_Ajax_Gmail Api - Fatal编程技术网

Javascript AJAX GMAIL API调用授权错误

Javascript AJAX GMAIL API调用授权错误,javascript,ajax,gmail-api,Javascript,Ajax,Gmail Api,我是GMail API的新手,正在尝试使用AJAX调用来检索邮件 我的代码是: $.ajax({ beforeSend: function (request) { request.setRequestHeader("authorization", "Bearer xxxxxxxxxxxxxxxxx.apps.googleusercontent.com"); }, url: 'https://www.googleapis.com

我是GMail API的新手,正在尝试使用AJAX调用来检索邮件

我的代码是:

 $.ajax({
    beforeSend: function (request)
       {
           request.setRequestHeader("authorization", "Bearer  xxxxxxxxxxxxxxxxx.apps.googleusercontent.com");
       },
    url: 'https://www.googleapis.com/gmail/v1/users/me/messages?key=xxxxxxxxxxxxxxxxxx',
    dataType: 'json',
    cache: false,
    success: function(data) {
         //  this.setState({Emails: data});
         console.log("Mail thread"+data);
       }.bind(this),
     error: function(xhr, status, err) {
       console.error(this.props.url, status, err.toString());
     }.bind(this)
   });
 },
该响应是一个401错误。在检查请求时,我发现以下查询参数附加到发送的请求URL:

&_=1470236511985 
因此请求URL如下所示

https://www.googleapis.com/gmail/v1/users/me/messages?key=xxxxxxxxxxxxxxxxxx&_=1470236511985 
追加的查询参数是导致401错误的原因,还是我使用的授权标头不正确?我怎样才能解决这个问题


提前感谢。

出于测试目的,您可以访问并获得带有Gmail API作用域的访问令牌。只需在名为
access\u token
的查询参数中使用此访问令牌:

var accessToken = 'ya29...';

$.ajax({
  url: 'https://www.googleapis.com/gmail/v1/users/me/messages?access_token=' + accessToken,
  dataType: 'json',
  success: function(data) {
    console.log(data.messages);
  }
}

只有在使用访问令牌时,才应使用
授权
-头,其值为
'Bearer'+accessToken
。如果您正在使用应用程序密钥,只需像现在这样使用查询参数
key
就足够了。即使删除标题并将API密钥作为查询参数传递,也会导致401。从中获取Gmail API访问令牌。在查询参数
access\u token
中使用该令牌。“这样行吗?”Thole做得很好。非常感谢,太好了!我从来没有在我的Gmail应用程序中使用过密钥,但是从操场上获取用于测试目的的令牌非常有用。也许谷歌专业人士稍后可以详细说明密钥。你能告诉我如何获得真正使用的accesstoken吗?