节点imap xoauth2身份验证失败

时间:2016-02-10 08:20:22

标签: node.js oauth-2.0 imap gmail-imap google-oauth2

我正在使用xoauth2模块生成一个xoauth2令牌,通过imap连接到gmail,我收到此错误:

`

[09:50:28.806] [LOG] [connection] Connected to host
[09:50:28.873] [LOG] <= '* OK Gimap ready for requests from 31.154.25.42 q4mb701
07656lfe'
[09:50:28.881] [LOG] => 'A0 CAPABILITY'
[09:50:29.067] [LOG] <= '* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID
 XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIE
NTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH'
[09:50:29.069] [LOG] <= 'A0 OK Thats all she wrote! q4mb70107656lfe'
[09:50:29.073] [LOG] => 'A1 AUTHENTICATE XOAUTH2 ******************************************
****************************************************************************************************************************
********************************************************************************='
[09:50:29.374] [LOG] <= '+ eyJzdGF0dXMiOiI0MDAiLCJzY2hlbWVzIjoiQmVhcmVyIiwic2Nvc
GUiOiJodHRwczovL21haWwuZ29vZ2xlLmNvbS8ifQ=='
[09:50:29.377] [LOG] => '\r\n'
[09:50:29.534] [LOG] <= 'A1 NO [AUTHENTICATIONFAILED] Invalid credentials (Failu
re)'
[09:50:29.537] [ERROR] ERROR Imap:Error: Invalid credentials (Failure)
[09:50:29.755] [LOG] [connection] Ended
[09:50:29.756] [LOG] Imap: Connection ended
[09:50:29.758] [LOG] [connection] Closed`

这是我的连接代码:

this.setImap = function(connParams) {
    //----------------------------------------------
    console.log(connParams);
    xoauth2gen = xoauth2.createXOAuth2Generator({
      user: connParams.user",
      clientId: configAuth.googleAuth.clientID,
      clientSecret: configAuth.googleAuth.clientSecret,
      refreshToken: connParams.refresh_token,
      accessToken: connParams.access_token,
       customPayload: {
      "access_type": "offline"
    }
    });

xoauth2gen.getToken(function(err, token) {
  if (err) {
    return console.log(err);
  }
  console.log("AUTH XOAUTH2 " + token);
  connParams.xoauth2 = token;
});

connParams = {
  id: 13,
  user: connParams.user,
  xoauth2: connParams.xoauth2,
  host: 'imap.gmail.com',
  port: 993,
  tls: 1,
  debug: console.log
}
//------------------------------------------- 
connParams.tlsOptions = {
  rejectUnauthorized: false
};

console.log(connParams);



self.imap = new Imap(connParams);

this.imap.once('ready', function() {
  console.log('Imap: ready');
  self.openInbox();
});

this.imap.once('error', function(err) {
  console.error("ERROR Imap:" + err);
});

this.imap.once('end', function() {
  console.log('Imap: Connection ended');
});
};

检查了一百万次的细节:(

这是我使用的范围:

scope: ['profile', "https://mail.google.com/" ]

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

您应该从connParams中删除用户,并在xoauth模块中添加空格......