You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何谷歌授权页Google Calendar权限为可选,如何将其设置为必填?

问题原因

你遇到的权限可选问题是因为未添加OIDC协议必填的基础openid scope,仅请求profile和email两个身份类scope时,谷歌OAuth同意页会自动将身份类权限和日历API权限拆分为两个独立权限组,允许用户单独取消勾选非身份类的日历权限。

当你移除profile和email时,不存在混合的OIDC身份权限请求,同意页只会展示日历权限组,默认就是必填不可取消的状态,符合你的预期。

修复方案

在你的scope数组中补充openid这个OIDC基础scope即可,修改后的授权代码如下:

$client = new Google_Client();
$client->setApplicationName(config('app_name'));
$client->setScopes([
    'openid', // 新增OIDC基础scope
    Google_Service_Calendar::CALENDAR,
    'profile',
    'email'
]);
$client->setAuthConfig(config('credentials.google'));
$client->setAccessType('offline');
$client->setPrompt('select_account consent');

return $client->createAuthUrl();

补充openid scope后,身份类权限和日历API权限会合并为一个授权组,同意页不会展示单独的勾选框,日历权限会变为必填状态,同时你仍然可以正常获取用户的邮箱、姓名等身份信息,不影响原有注册流程。

额外校验

如果修改后仍然没有生效,可以登录谷歌云控制台,进入OAuth同意屏幕配置页,确认你已经将openid、email、profile、Google Calendar四个scope都添加到了声明列表中,且应用验证时已经提交了这些scope对应的使用场景说明。


内容的提问来源于stack exchange,提问作者AmirRezaM75

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:06:09