Google Cloud OAuth2 scopes未更新:新增Pub/Sub后SPA调用gapi报403错误
排查和解决步骤
- 核对OAuth同意屏幕状态
如果你的应用还处于测试状态,只有预先添加到「测试用户」列表中的账号才能请求新增的敏感权限,Cloud Pub/Sub的scope属于敏感权限范围,未加入测试列表的账号不会触发新scope的授权流程。如果应用已经正式发布,确认你提交的scope变更已经通过Google的审核,未审核通过的新增scope不会在同意屏幕展示。 - 调整gapi授权触发逻辑
不要依赖gapi.client.init方法自动追加新scope,该方法如果检测到已有有效旧凭证会直接复用,不会触发新scope的授权请求。你需要主动调用授权接口强制请求所有需要的scope,示例代码如下:
gapi.auth2.getAuthInstance().signIn({ scope: 'https://www.googleapis.com/auth/pubsub https://www.googleapis.com/auth/cloudiot', prompt: 'consent' })
添加prompt: 'consent'参数可以强制弹出授权同意屏,确保所有scope都展示给用户确认。
- 确认Cloud Pub/Sub API已启用
登录Google Cloud控制台,进入对应项目的API和服务页面,确认Cloud Pub/Sub API已经处于启用状态,未启用API也会触发权限类报错。 - 核对scope拼写
确认你使用的scope拼写完全正确,https://www.googleapis.com/auth/pubsub是Cloud Pub/Sub的全量读写scope,如果你只需要细分权限也可以替换为对应细粒度scope,不要拼写错误。
内容的提问来源于stack exchange,提问作者Szabolcs Szekelyi
相关产品推荐
相关产品推荐

