如何强制OAuth2获取YouTube API数据并默认勾选权限选项?
解决Google OAuth2登录时强制选中YouTube权限勾选框的问题
你遇到的是Google OAuth2授权页面默认不勾选额外API权限的问题,以下是具体解决方案:
移除
setIncludeGrantedScopes(true)配置
这个参数用于增量授权,会让Google自动跳过用户已授权过的权限,但首次登录时用户无任何授权记录,它反而会导致授权页面将非基础权限(比如youtube.readonly)标记为可选、默认不勾选。删掉这个配置后,授权页面会把所有请求的权限都列为需要确认的项。保留强制授权配置
你已经设置的setApprovalPrompt('force')是正确的,它会强制用户每次登录都确认权限,避免跳过权限确认步骤。
调整后的代码如下:
$google_client = new Google_Client(); //auth $google_client->setClientId(ClientID); $google_client->setClientSecret(SecretKey); $google_client->setRedirectUri('https://example.com'); $google_client->setAccessType('offline'); $google_client->setApprovalPrompt('force'); // 移除setIncludeGrantedScopes(true)配置 $google_client->addScope(array( 'email', 'profile', 'https://www.googleapis.com/auth/youtube.readonly' ));
- 额外验证权限是否授权成功
即使做了以上调整,Google仍允许用户手动取消勾选YouTube权限,所以用户授权完成后,你需要检查返回的access token是否包含youtube.readonly权限:
- 调用Google Token Info接口获取权限列表(传入用户的access token)
- 如果未包含目标权限,引导用户重新发起授权请求
注意:Google授权页面的设计逻辑中,非基础API权限默认处于未勾选状态,开发者无法直接强制勾选,但通过上述步骤可以让该权限成为用户必须确认的选项,同时后续验证能确保只有授权了该权限的用户才能使用相关功能。
内容的提问来源于stack exchange,提问作者Jaros
相关产品推荐
相关产品推荐

