XOAuth2 for Gmail错误证书无效
我使用passport.js为我的身份验证服务从google获取oauth2访问令牌(https://github.com/jaredhanson/passport-google-oauth#usage-of-oauth-20),我可以获取访问令牌范围:https://mail.google.com/,https://www.googleapis.com/auth/userinfo.email。 但是,当我试图连接到imap(使用https://github.com/mscdex/node-imap)时,我收到错误:'无效的凭据'。
以下是我正在使用的代码段代码:
var authData = [
"user=" + ('test@gmail.com' || ""),
"auth=Bearer " + 'ya29.LgBFSGtnPtfHLxkAAADjgeEFpUC9nD31kP5BqLKuH1MO3e_TRSdRTjEVKqQ-GQ',
"",
""];
var xoauth2_token = new Buffer(authData.join("x01"), "utf-8").toString("base64");
var imap = new Imap({
user: ‘test@gmail.com',
xoauth2: xoauth2_token,
host: 'imap.gmail.com',
port: 993,
tls: true,
debug: console.log
});
imap.on('ready', function() {
imap.openBox('INBOX', true, function() {
var f = imap.seq.fetch(1);
f.on('message', function(m) {
m.once('attributes', function(attrs) {
console.log(attrs);
});
});
f.on('end', function() {
imap.end();
});
});
});
imap.connect();
请求和响应的标题:
[connection] Connected to host
<= '* OK Gimap ready for requests from 212.143.212.222 ce43mb7026158web'
=> 'A0 CAPABILITY'
<= '* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN'
<= 'A0 OK Thats all she wrote! ce43mb7026158web'
=> 'A1 AUTHENTICATE XOAUTH2 dXNlcj11YXBwZmFjdG9yeUBnbWFpbC5jb20BYXV0aD1CZWFyZXIgeWEyOS5MZ0JGU0d0blB0ZkhMeGtBQUFEamdlRUZwVUM5bkQzMWtQNUJxTEt1SDFNTzNlX0dMU2RSVGpFVktxUS1HUQEB'
<= '+ eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2NvcGUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ=='
=> 'rn'
<= 'A1 NO [ALERT] Invalid credentials (Failure)'
我尝试着指定空密码,并且没有,与用户或没有,注意似乎工作。
我还遵循google网站上的示例:https://developers.google.com/gmail/xoauth2_libraries
在我的谷歌帐户中,我可以看到我正在使用的应用程序连接到谷歌并获取令牌,具有管理和查看电子邮件的授权,并基于用户配置文件的详细信息。
我究竟做错了什么?
我遇到了同样的问题。 它与OAuth 2.0范围相关。
首先,我要求获得访问权限:
有了这些范围,我得到了这个错误。
“A1 NO [ALERT]凭据无效(失败)”
最后我发现在使用OAuth 2.0
IMAP和SMTP访问的范围是https://mail.google.com/ 。
我请求了该范围的权限,并开始工作。
var params = {
response_type: "code",
client_id: "YOUR_CLIENT_ID",
redirect_uri: "REDIRECT_URI",
scope: 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://mail.google.com/',
approval_prompt: 'force'
};
问候,
jcvalerio
链接地址: http://www.djcxy.com/p/83207.html