我在使用node使用Gmail API创建过滤器时遇到问题。身份验证和范围很好;我收到错误"过滤器没有任何标准"。我猜我在标题/正文/资源参数方面做错了什么,但无法解决。
这是函数,我尝试了许多变体:
function createFilter(auth){
var gmail = google.gmail({version:'v1','auth':auth});
// Create filter rule
var data = {
resource: {
criteria: {
from: "someone@gmail.com"
},
action: {
removeLabelIds: ["INBOX"]
}
},
userId: 'me'
}
// Send rule to Gmail
gmail.users.settings.filters.create(data, function (err, result) {
if (err) {
console.log( err);
} else {
console.log( result );
callback( result );
}
});
};
文档:
创建筛选器 https://developers.google.com/gmail/api/v1/reference/users/settings/filters/create筛选资源 https://developers.google.com/gmail/api/v1/reference/users/settings/filters#resource提出请求https://github.com/google/google-api-nodejs-client/#making-authenticated-requests
PHP 中的类似工作要求:
使用 Gmail API 创建过滤器
任何帮助将不胜感激!
这个修改怎么样?
function createFilter(auth){
var gmail = google.gmail('v1');
var data = {
"criteria": {
"from": "someone@gmail.com",
},
"action": {
"removeLabelIds": [
"INBOX",
],
},
};
gmail.users.settings.filters.create({
auth: auth,
userId: 'me',
resource: data,
}, function(err, result) {
if (err) {
console.log( err);
} else {
console.log( result );
callback( result );
}
});
}
注意:
- 如果出现
Insufficient Permission
错误,请将https://www.googleapis.com/auth/gmail.settings.basic
添加到范围中。修改范围后,请删除包含刷新令牌的文件,然后重新授权。这样,新范围将反映到刷新令牌。
如果这不起作用,我很抱歉。
编辑:
我确认当我对googleapis使用v27.0.0,v26.0.1和v25.0.0时,发生了Filter doesn't have any criteria'
错误。那么您可以将版本降级到 v24.0.0 吗?当我使用 v24.0.0 时,它工作正常。据悉,最近更新的 node.js googleapis 存在一些错误。所以我正在使用 v24.0.0。