【发布时间】: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