我在服务器中使用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.
答案 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应该有效的任何错误。