我正在从Gmail API“获取”方法获取草稿的原始数据,并使用Gmail API“发送”方法将其发送。
'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 page本身发送原始数据,则发送成功。因此原始数据是正确的。
我在发送电子邮件时丢失了一些东西。请帮忙!
答案 0 :(得分:0)
401错误表示“凭据无效”,最有可能是因为您的令牌已过期或无效。
Google API资源管理器和Google Javascript libraries(通常)会为您处理令牌,但是如果您直接使用XMLHttpRequest()
调用服务端点,则必须自己管理令牌
如果您想走这条路,则必须执行以下详细信息:https://developers.google.com/identity/protocols/OAuth2
您可以在“ Oauth2游乐场”中尝试尝试:https://developers.google.com/oauthplayground/
答案 1 :(得分:0)
感谢您的所有答复。
我使用以下代码发送了电子邮件-
function sendEmail(raw) {
if (raw) {
var request = new XMLHttpRequest();
var url = 'https://www.googleapis.com/gmail/v1/users/me/messages/send';
var params = JSON.stringify({'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");
}
}
}
}
我纠正了两个错误-
1.令牌是通过URL和标头发送的。它只能在标题中发送。
2.原始参数以字符串形式发送,但应作为JSON对象发送。