代码之家  ›  专栏  ›  技术社区  ›  Shahar Lahav

节点imap xoauth2身份验证失败

  •  0
  • Shahar Lahav  · 技术社区  · 8 年前

    我正在使用xoauth2模块生成一个xoauth 2令牌,通过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 回复  |  直到 8 年前
        1
  •  1
  •   user6063790 user6063790    8 年前

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