javascript - 在 Chrome 扩展程序中使用 Gmail API 发送电子邮件时获取 401 状态
问题描述
我正在获取从 Gmail API“get”方法起草的原始数据,并使用 Gmail API“send”方法发送它。
'var url = 'https://www.googleapis.com/gmail/v1/users/me/messages/id?
format=raw&alt=json&access_token=' + token;
url = url.replace("id", emailId);
var x = new XMLHttpRequest();
x.open('GET', url , true);
x.send();
x.onload = function() {
var jsonRes = JSON.parse(x.response);
sendEmail(jsonRes.raw);
}
function sendEmail(raw) {
if (raw) {
var request = new XMLHttpRequest();
var url = 'https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json&access_token=' + token;
params = "raw=" + raw;
request.open('POST', url , true);
request.setRequestHeader("Authorization", "Bearer " + token);
request.setRequestHeader("Content-type", "application/json");
request.send(params);
request.onload = function() {
if (200 === request.status) {
alert("Email sent successfully");
}
}
}`
我正在获得 401 状态。
如果我从API 页面本身发送此原始数据,则发送成功。因此原始数据是正确的。
我在发送电子邮件时遗漏了一些东西。请帮忙!
解决方案
401 错误表示“凭据无效”,很可能是因为您的令牌已过期或无效。
Google API Explorer 和Google Javascript 库(通常)为您处理令牌,但如果您直接使用 调用服务端点XMLHttpRequest()
,则必须自己管理令牌。
如果您想走这条路,以下是您必须实施的详细信息: https ://developers.google.com/identity/protocols/OAuth2
您可以在“Oauth2 游乐场”中尝试一下: https ://developers.google.com/oauthplayground/