我正在尝试使用Gmail API的节点库创建带有自定义ID的标签。 API有一个用于设置您自己的ID的请求参数,但是当我尝试创建标签时,我收到错误:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidArgument",
"message": "Invalid request"
}
],
"code": 400,
"message": "Invalid request"
}
}
当我没有提供身份证时,标签创建没有问题。但是出于我的目的,我需要设置标准标签ID。任何人都知道这里发生了什么,或者它只是api的错误/错误? 您可以尝试为自己的帐户创建自己的标签,并在此处查看我正在谈论的更多内容:https://developers.google.com/apis-explorer/#p/gmail/v1/gmail.users.labels.create
创建标签的代码:
var service = Google.gmail({version : 'v1', auth : oauth2Client});
service.users.labels.create({
userId : 'user address here',
labelListVisibility : 'labelShow',
messageListVisibility : 'show',
name : 'label name here',
id : 'label id here'
}, function (err) {
if (err) {
throw err;
} else {
callback();
}
});
谢谢!
答案 0 :(得分:5)
您说“API有一个用于设置您自己的ID的请求参数”,但https://developers.google.com/gmail/api/v1/reference/users/labels/create处的文档未显示任何此类字段作为users.labels.create
端点的一部分。
如果查看https://developers.google.com/gmail/api/v1/reference/users/labels,您将看到一个不可变的id字段,但这不可写,因此该值由系统而不是您设置。
users.labels.create
的文档还表明将返回完全填充的Users对象,因此您将能够知道刚创建的标签的ID是什么。要使用node.js库执行此操作,请将回调函数设置为具有第二个参数,该参数将包含调用的结果。所以它可能看起来像这样:
var service = Google.gmail({version : 'v1', auth : oauth2Client});
service.users.labels.create({
userId : 'user address here',
labelListVisibility : 'labelShow',
messageListVisibility : 'show',
name : 'label name here'
}, function (err, result) {
if (err) {
throw err;
} else {
console.log( result );
callback( result );
}
});
如评论中所述,您还可以使用users.labels.list
获取此用户的完整标签列表。