【问题标题】:AJAX GMAIL API Call Authorization errorAJAX GMAIL API 调用授权错误
【发布时间】:2016-12-09 09:44:23
【问题描述】:

我是 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 错误还是我错误地使用了授权标头?我该如何解决这个问题。

提前致谢。

【问题讨论】:

  • Authorization-header 仅应在您使用访问令牌时使用,其值为 'Bearer ' + accessToken。如果您正在使用您的应用程序密钥,则只需像您一样使用查询参数key 就足够了。
  • 即使删除标头并将 API 密钥作为查询参数传递也会导致 401。
  • the playground 获取 Gmail API 访问令牌。在查询参数access_token 中使用该标记。这行得通吗?
  • @Tholle 工作完美。非常感谢。
  • 太棒了!我从未在我的 Gmail 应用程序中使用过密钥,但从操场获取令牌用于测试目的非常有用。也许 Google 专业人士可以稍后再详细说明。

标签: javascript ajax gmail-api


【解决方案1】:

出于测试目的,您可以访问 OAuth 2.0 Playground 并获取具有 Gmail API 范围的访问令牌。只需在名为 access_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);
  }
}

【讨论】:

  • 你能告诉我如何获得真正使用的访问令牌吗?
猜你喜欢
  • 2021-01-23
  • 1970-01-01
  • 2019-03-09
  • 2020-06-22
  • 2016-08-18
  • 1970-01-01
  • 2016-06-26
  • 2016-05-14
  • 2014-02-18
相关资源
最近更新 更多