创建Google Classroom注册关联topic时出现@TopicNotOwnedByProject错误
问题根因
2024年第二季度Google Classroom API完成了权限校验逻辑更新,这是你3周前开始出现报错的直接原因:
- 旧规则支持跨项目关联Pub/Sub主题,只要调用账号同时拥有两个项目、对应主题的操作权限即可正常调用
- 新规则强制限制:调用Classroom API创建推送注册时,身份验证令牌所属的GCP项目,必须与Pub/Sub主题所属的GCP项目完全一致,不再支持跨项目绑定主题
你当前的操作流程是从项目1鉴权获取令牌,尝试绑定项目2下的主题,不符合新的校验规则,所以触发@TopicNotOwnedByProject的403报错,和你账号的所有者权限配置无关。
修复方案
- 方案1:将身份验证逻辑迁移到项目2中,直接使用项目2的凭证申请OAuth令牌后调用Classroom API创建注册,完全匹配新规则要求
- 方案2:如果必须保留项目1作为统一身份验证入口,在项目1中重新创建对应的Pub/Sub主题、订阅,再将Classroom业务资源关联到项目1的主题上
- 方案3:如果暂时不想调整现有资源配置,可以给项目1的服务账号授予项目2主题的
pubsub.topics.attachSubscription权限,同时向Google Cloud支持团队提交跨项目绑定白名单申请,白名单审核周期较长,优先推荐前两种落地成本更低的方案
内容的提问来源于stack exchange,提问作者Александр Бутареев
相关产品推荐
相关产品推荐

