【问题标题】:Any way to make AJAX calls to Gmail API without going through JS library?有什么方法可以在不通过 JS 库的情况下对 Gmail API 进行 AJAX 调用?
【发布时间】:2016-09-15 17:54:55
【问题描述】:

可以在here 找到发出 GET 请求以通过 Gmail API 获取用户消息的简单指南。

但我们被指示执行请求的方式如下:

function getMessage(userId, messageId, callback) {
  var request = gapi.client.gmail.users.messages.get({
    'userId': userId,
    'id': messageId
  });
  request.execute(callback);
}

是否可以在客户端使用良好的 ol' XMLHttpRequest 对象发出请求?如果是这样,应该将哪些参数传递到调用中?

我试过这个:

var getMessages = function() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() { 
   if (xhr.readyState == 4 && xhr.status == 200)
      console.log(xhr.responseText);
   }
xhr.open( "GET", "https://www.googleapis.com/gmail/v1/users/me/messages", true );
xhr.send();
 }

但我得到一个 401,即使在认证之后。

【问题讨论】:

  • 我发现这个问题解决了类似的问题,但使用 jquery:stackoverflow.com/questions/25334746/…。所以我在代码中添加了xhr.setRequestHeader("authorization", userToken.access_token);,但仍然得到 401

标签: javascript ajax xmlhttprequest gmail-api


【解决方案1】:

正如this answer 中所述,您应该将访问令牌作为名称为access_token 的查询参数传递,或者在授权标头值前加上“Bearer”,如下所示:

xhr.setRequestHeader("authorization", "Bearer " + userToken.access_token);

【讨论】:

  • 啊!我是如此接近!我从来没有真正理解为什么必须包含“承载者”这个词以及它的含义,所以我现在将阅读它,这样我就不会再忘记了。谢谢!
猜你喜欢
  • 2021-04-23
  • 2017-11-17
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2011-10-13
相关资源
最近更新 更多