我想在云上的pub / sub主题创建监视但无法创建它。为此,我正在使用其余请求
request_Req.post({
url:'https://www.googleapis.com/gmail/v1/users/me/watch',
headers:{
'content-type': 'application/json',
'Authorization': 'Bearer '+ access_token,
},
scope : [
'https://mail.google.com/'
],
'body': JSON.stringify({
'topicName' : "/projects/ProjectId/topics/TopicId",
'labelIds' : ["INBOX"]
});
}),function(error, resp, body){
});
但我收到错误消息Error sending test message to Cloud
PubSub/projects/ProjectID/topics/TopicId : Resource not found resource=TopicId
答案 0 :(得分:9)
Google Cloud Pubsub主题必须存在于同一Google Console项目中,该项目用于对用户进行身份验证。在Google控制台中检查/项目/ ProjectId / topics / TopicId 您的项目,并确保存在Pubsub主题。此外,您必须授予对Gmail服务的访问权限,才能通过以下请求将消息发布到您的Pubsub主题:
POST "https://pubsub.googleapis.com/v1beta2/{resource=/projects/**ProjectId**/topics/**TopicId**}:setIamPolicy"
Content-type: application/json
{
"policy": {
"bindings": [{
"role": "roles/pubsub.publisher",
"members": ["serviceAccount:gmail-api-push@system.gserviceaccount.com"],
}],
}
}
如果未授予gmail将消息发布到Pubsub主题的权限,则不会创建监视请求。请尝试API explorer设置权限。
答案 1 :(得分:3)
确保创建主题并确保在其上正确设置了AnyPolicy。根据其他答案的建议,请勿在其上使用API资源管理器。按照指南中的说明(使用您自己的服务帐户客户端)执行那些Cloud Pub / SUb调用: https://developers.google.com/gmail/api/guides/push