nodejs gmail failedPrecondition

时间:2018-03-04 05:33:52

标签: node.js gmail-api google-api-nodejs-client

所以我使用它:https://github.com/google/google-api-nodejs-client#using-api-keys

这里是nodejs代码:

router.get("/deals", function(req, res, next) {
    var key = require('../gmail-a574e06ad196.json');
    var jwtClient = new google.auth.JWT(
      key.client_email,
      null,
      key.private_key,
      ['https://www.googleapis.com/auth/gmail.readonly', 'https://mail.google.com/'], // an array of auth scopes
      null
    );

    jwtClient.authorize(function (err, tokens) {
      if (err) {
        res.send('123');
        return;
      }

      console.log('token is: ', tokens)

      // Make an authorized request to list Drive files.
      drive.users.labels.list({
        auth: jwtClient,
        userId: 'me'
      }, function (err, resp) {
          console.log(err)
        res.send('123')
      });
    });
});

但是一旦我点击那个api,我就会收到以下错误:   错误:    [{domain:' global',        原因:' failedPrecondition',        消息:'错误请求' }]}

我谷歌周围。在某些网站上发现,如果您拥有G-Suite帐户(即付费帐户),则该服务帐户才有效。我的Gmail帐户是一个普通的个人帐户。所以无论我做什么,它都不会工作?

  1. 这是真的吗?
  2. 我想要做的是,所以我有一个gmail帐户来收集新闻简报,我想创建一个nodejs api,它返回/列出该帐户的所有电子邮件。我不想要oAuth,因为真的,不需要手动登录。我想要的只是当页面加载,登录自动发生并且api返回电子邮件列表时,所以每个人都可以看到列表。是否还有其他任何实现此目的的方法?
  3. 由于

1 个答案:

答案 0 :(得分:0)

您无法将服务帐户与普通用户Gmail帐户一起使用,因为无法对其他用户进行微妙访问。你只能用gsuite来做。

您可以考虑直接通过SMTP或IMAP服务器