【问题标题】:Gmail API nodejs messages.list labelIds not workingGmail API nodejs messages.list labelIds不起作用
【发布时间】:2018-07-25 18:11:52
【问题描述】:

我在服务器中使用 node.js 来访问用户的 Gmail 收件箱。 OAuth2 部分效果很好,但是当我尝试指定收件箱来获取消息列表时,它似乎被忽略了。我得到了完整的消息 id 数组,而不仅仅是收件箱中的。在每次尝试中,我都会得到前 100 个消息 ID 的数组,但收件箱只有 5 条消息。我也尝试过使用其他标签,例如“未读”,结果相同。

似乎“labelIds”参数没有在请求中传递(或被忽略)。请记住,这是在不使用 Express.js 的情况下使用 Node.js API。

这里是代码 sn-ps。我错过了什么?

var http = require("http");
var url = require("url");
var fs = require('fs')
var google = require('googleapis');
var googleAuth = require('google-auth-library');
...
var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);

var gmail = google.gmail('v1');
gmail.users.messages.list ({
    auth:oauth2Client,
    userId:'me',
    labelIds:"INBOX"}, function (err, result)
        {
        ... etc.

【问题讨论】:

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


    【解决方案1】:

    User.message.list 采用标签 ID。所以首先我们搜索用户标签。 Link

    GET https://www.googleapis.com/gmail/v1/users/me/labels?fields=*&key={YOUR_API_KEY}
    

    回复:

      {
       "id": "INBOX",
       "name": "INBOX",
       "messageListVisibility": "hide",
       "labelListVisibility": "labelShow",
       "type": "system"
      },
    

    所以现在我们知道要传递的正确值是 INBOX link

    GET https://www.googleapis.com/gmail/v1/users/me/messages?labelIds=INBOX&fields=*&key={YOUR_API_KEY}
    

    当要传递的正确值为INBOX 时,您的代码使用inbox。您说您已经尝试过了,我建议您再试一次并编辑您的问题并发布您使用 INBOX 应该可以解决的任何错误。

    【讨论】:

    • 2/17 更新问题。在您的收件箱标签示例中,“messageListVisibility”:“隐藏”是否与此问题相关?
    猜你喜欢
    • 2017-02-19
    • 2019-02-14
    • 2020-10-11
    • 2014-12-01
    • 2017-04-13
    • 1970-01-01
    • 2021-11-10
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多