主题是在云pub / sub上创建的,但无法在该主题上创建监视

时间:2015-06-20 10:32:54

标签: cloud gmail-api google-cloud-platform google-cloud-pubsub

我想在云上的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

2 个答案:

答案 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