Swift iOS中GIDSignIn的Scopes未自动选中问题咨询
iOS GIDSignIn OAuth认证权限问题
我们的iOS应用采用GIDSignIn实现OAuth认证,目前遇到以下问题:
- 授权界面中配置的Scopes未自动选中(附图:Google授权界面未选中权限)
- 已在代码中指定
additionalScopes,但仍需手动选择权限范围
补充信息:客户端ID及应用已在Google控制台完成验证,登录时无“不安全应用”提示。同时想了解:应用上线至App Store后该情况是否会改变?
代码实现:
func signInWithGoogle() { guard let clientID = FirebaseApp.app()?.options.clientID else { return } // 创建Google Sign In配置对象 let config = GIDConfiguration(clientID: clientID) print("Client ID: \(clientID)") let additionalScopes = ["https://www.googleapis.com/auth/youtube.readonly", "https://www.googleapis.com/auth/yt-analytics.readonly"] // 启动登录流程 GIDSignIn.sharedInstance.signIn(with: config, presenting: self, hint: nil, additionalScopes: additionalScopes) { [unowned self] user, error in if let error = error { // ... return } }
问题解答
1. 为何指定additionalScopes后仍需手动选择权限
- Google OAuth的安全设计中,非基础权限(如你请求的YouTube只读、YouTube分析只读权限)默认不会自动勾选。即使用户首次授权,也需要手动确认这类额外权限,目的是让用户明确知晓应用请求的权限范围,避免静默获取敏感权限。
- 代码中指定
additionalScopes仅用于告知Google需要请求这些权限,但最终的权限勾选操作必须由用户手动完成——只有Google定义的"基础权限"(如邮箱、基本个人资料等)才会默认选中。
2. 上线App Store后情况是否会改变
不会。这个权限勾选的行为是Google OAuth认证流程的统一规则,和应用是否上架App Store无关。无论应用处于开发测试阶段还是正式上架,Google的授权界面都会保持一致的权限展示和交互逻辑,用户仍需手动确认额外权限。
补充建议:
可以在触发Google授权前,在应用内添加提示说明,告知用户需要这些权限的具体用途,减少用户疑惑,提升授权通过率。
内容的提问来源于stack exchange,提问作者husharoonie
相关产品推荐
相关产品推荐

