Gmail API nodejs messages.list labelIds无效

时间:2018-02-15 03:34:50

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

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

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

以下是代码段。我错过了什么?

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.

1 个答案:

答案 0 :(得分:0)

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应该有效的任何错误。