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

SignInWithAppleButton无法获取用户凭证,authorizedScopes为空的排查

Sign In with Apple 相关问题解答

1. 从SignInWithAppleButton获取用户凭证的方法

通过SignInWithAppleButton获取用户凭证的核心流程如下:

  • 初始化按钮时指定授权场景(如.signUp用于注册、.signIn用于登录)
  • 在request闭包中声明需要获取的权限范围(如.email、.fullName)
  • 在onCompletion闭包中解析授权结果:
    1. 当授权成功时,将authorization.credential转换为ASAuthorizationAppleIDCredential类型
    2. 从该凭证对象中提取用户唯一ID(user属性)、邮箱、全名、授权范围等信息

示例核心逻辑:

SignInWithAppleButton(.signUp) { request in
    // 请求邮箱权限
    request.requestedScopes = [.email]
} onCompletion: { result in
    switch result {
    case .success(let authorization):
        // 转换为Apple ID凭证
        guard let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential else {
            print("未知凭证类型")
            return
        }
        // 获取用户唯一ID(永久不变)
        let userID = appleIDCredential.user
        // 获取授权范围
        let authorizedScopes = appleIDCredential.authorizedScopes
        // 根据授权范围获取邮箱/全名
        if authorizedScopes.contains(.email) {
            let email = appleIDCredential.email
            print("用户邮箱:\(email ?? "未获取到邮箱")")
        }
    case .failure(let error):
        print("授权失败:\(error.localizedDescription)")
    }
}

2. 授权后authorizedScopes为空的原因及解决办法

你遇到的首次授权后authorizedScopes为空的问题,常见原因及解决方式如下:

原因1:Apple ID授权状态缓存

Apple会缓存同一个Apple ID对App的授权状态,仅首次授权时会返回邮箱和全名,后续即使删除App重装,也不会再次返回这些信息(除非重置授权状态)。
解决方法:

  • 前往设备「设置」→「Apple ID」→「密码与安全性」→「使用Apple ID的App」,找到你的App并删除授权,然后重新测试
  • 使用未授权过该App的新Apple ID进行测试

原因2:Capabilities配置不完整

确认你的App Target的Capabilities中,「Sign In with Apple」已开启,且所有相关Target(如主App、扩展)都完成了配置。如果仅给主Target开启,但测试时使用了未配置的Target,会导致权限不生效。

原因3:用户在授权弹窗中拒绝共享信息

即使用户代码中请求了.email权限,若用户在授权弹窗中选择「不共享」邮箱,authorizedScopes会为空,且无法获取邮箱信息。这种情况需要引导用户重新授权并同意共享信息。

原因4:按钮类型与场景不匹配

如果你的App已存在其他登录方式,使用.signUp类型的按钮可能不会触发权限请求弹窗(系统判定为非首次注册场景)。可以尝试改用.signIn类型的按钮测试。

参考信息

除Apple官方文档外,Apple开发者论坛中大量开发者反馈过类似的授权缓存问题,核心解决思路均围绕重置授权状态或使用新测试账号展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:27:14