You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用HTTP推送调用Google Cloud Pub/Sub发布接口遇403错误求助

解决Google Cloud Pub/Sub 403错误的常见新手坑

嘿,刚上手GCP Pub/Sub碰到403真的很挠头,我帮你梳理几个最容易踩的新手失误,大概率能解决你的问题:

  • API密钥权限没配对
    你用的API key默认是没有Pub/Sub发布权限的!去Google Cloud控制台的「API和服务」→「凭据」页面找到你的API key,先确认它关联了Pub/Sub API,然后还要给对应的目标topic配置pubsub.topics.publish权限。另外多说一句:API key更适合前端/移动端这类客户端场景,后端服务用服务账号密钥会更安全,权限控制也更灵活,后期维护起来省心很多。

  • 请求里的data没做Base64编码
    这个是新手最容易忽略的点!Pub/Sub要求messages.data必须是Base64编码后的字符串,你直接传"test"是不符合要求的。把"test"转成Base64后是dGVzdA==,所以正确的请求体应该是:

    {"messages":[{"data":"dGVzdA=="}]}
    

    之前你传原始字符串,可能不仅会触发权限类错误,还会导致格式校验失败,出现各种奇怪的报错。

  • 请求头少了Content-Type
    别忘了给POST请求加Content-Type: application/json的请求头!如果没加,Google的API服务器没法正确解析你传的JSON体,也会返回错误(可能是403,也可能是400)。

  • Pub/Sub API没启用
    再检查下你的GCP项目里有没有启用Pub/Sub API?去「API和服务」→「库」里搜索「Cloud Pub/Sub API」,确认它是启用状态。如果没启用,哪怕密钥和请求都对,也会直接返回403。

  • 项目ID和Topic名称写错了
    最后再核对下URL里的{project}是你的项目ID(不是项目名称,项目ID是唯一的字符串,比如my-iot-project-12345),{topic}是你创建的topic的完整ID,有没有拼写错误或者大小写不对?

试试调整这些点,应该能解决你的问题啦!

内容的提问来源于stack exchange,提问作者R.Dyer-Evans

火山引擎 最新活动