使用Pubsub在node.js中推送Gmail - 如何设置发布权限?

时间:2015-07-29 13:31:34

标签: node.js publish publish-subscribe gmail-api policy

我尝试使用SetIamPolicy为主题授予发布权限,如下所述:[Google Cloud Pub/Sub API - Push E-mail但尚未成功 - 不确定确切的调用应该是什么样的。

现在我已经制作了一个包含以下内容的json文件:

POST "https://pubsub.googleapis.com/v1beta2/{resource=projects/myproject/topics/mytopic}:setIamPolicy"
Content-type: application/json

{
  "policy": {
    "bindings": [{
      "role": "roles/pubsub.publisher",
      "members": ["serviceAccount:gmail-api-push@system.gserviceaccount.com"],
    }],
  }
}

如下所述:http://developers.google.com/gmail/api/guides/push并将其称为:topics.SetIamPolicy('pubsub_policy.json'); - 但setiampolicy是一个未定义的函数。有任何想法吗?谷歌搜索在node.js

中的例子方面完全没有任何结果

1 个答案:

答案 0 :(得分:2)

我使用了Google Developers Console

经过大量搜索后,我发现在Google Developers Console中设置发布权限会更容易。

  1. 点击您的项目
  2. 点击大数据> 发布/订阅
  3. 如果您还没有这样做,请创建一个主题
  4. 选中该主题旁边的框
  5. 点击顶部的权限按钮
  6. 在应该显示like this
  7. 的框中添加您的权限



    我确实为nodejs找到了关于 setIamPolicy()this documentation

    var myPolicy = {
       bindings: [
         {
            role: 'roles/pubsub.subscriber',
            members: ['serviceAccount:myotherproject@appspot.gserviceaccount.com']
         }
       ]
    };
    
    topic.iam.setPolicy(myPolicy, function(err, policy, apiResponse) {});
    
    subscription.iam.setPolicy(myPolicy, function(err, policy, apiResponse) {});
    


    但我无法让它发挥作用。 topic.iam.setPolicy()不存在。我只看到了这一点:

    //console.log(topic)
    {
        ...
        iam: { 
             resource: 'projects/[projectId]/topics/[topicName]',
             makeReq_: [Function] } 
    }