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

iOS集成Facebook至Cognito用户池:邮箱/手机号未同步问题排查

问题分析与解决方案

核心原因:Facebook权限审核与应用状态限制

你遇到的邮箱/手机号无法同步到Cognito的问题,核心原因大概率是Facebook应用的权限未通过审核,以及可能的权限请求不完整。结合你提到的“登录审核错误提示”,具体拆解如下:

1. 未审核应用的权限限制

Facebook应用处于开发模式时,仅允许应用的管理员、开发者和已添加的测试用户获取请求的权限(如email),普通用户即便授权,也无法返回敏感信息。如果你的测试账号不在内部测试列表中,即便自己配置了邮箱手机号,也无法被应用获取。

另外,user_phone_number(手机号)属于Facebook的敏感权限,必须完成商业验证+权限审核才能向普通用户开放,开发模式下仅内部用户能测试该权限。

2. 权限请求与配置遗漏

  • Amplify配置的Scope不全:你的amplifyconfiguration.json中仅请求了openid和email,如果需要获取手机号,必须添加user_phone_number到Scopes数组中。
  • Facebook后台权限未配置:需在Facebook开发者后台的「登录产品」设置里,将email和user_phone_number添加到「请求的权限」列表并保存,否则即便Amplify请求了权限,Facebook也不会返回对应信息。

3. Cognito属性映射需确认

进入Cognito用户池的「身份提供商」→「Facebook」配置页,确保:

  • Facebook的email字段已映射到Cognito的email属性
  • Facebook的phone_number字段已映射到Cognito的phone_number属性
  • 所有映射项均已勾选「启用」

排查与解决步骤

  1. 验证测试用户身份:确认测试账号是Facebook应用的开发者/管理员,或已添加到「测试用户」列表中,用该账号重新登录测试是否能获取邮箱。
  2. 补充权限配置:
    • 在amplifyconfiguration.json的Scopes中添加user_phone_number(如果需要手机号):
      "Scopes": ["openid", "email", "user_phone_number"]
      
    • 在Facebook开发者后台的「登录产品」→「权限与功能」中,添加并启用email和user_phone_number权限。
  3. 完成商业验证与权限审核:
    • 如果需要面向普通用户获取手机号,必须先完成Facebook的商业验证(提交企业资质等材料)。
    • 提交email和user_phone_number权限的审核申请,说明权限的使用场景,审核通过后普通用户即可正常授权并同步信息。
  4. 检查Cognito映射:重新确认Cognito的属性映射规则,确保字段对应正确且已启用。

附:你提供的代码与配置

iOS登录代码

Amplify.Publisher.create {
    try await Amplify.Auth.signInWithWebUI(for: .facebook, presentationAnchor: window)
}.sink {
    if case let .failure(authError) = $0 {
        print("Sign in failed \(authError)")
    }
} receiveValue: { signInResult in
    if signInResult.isSignedIn {
        print("Sign in succeeded")
    }
}

amplifyconfiguration.json配置

{
    "auth": {
        "plugins": {
            "awsCognitoAuthPlugin": {
                "IdentityManager": {
                    "Default": {}
                },
                "CognitoUserPool": {
                    "Default": {
                        "PoolId": "us-*********",
                        "AppClientId": "************",
                        "AppClientSecret": "************",
                        "Region": "us-************"
                    }
                },
                "Auth": {
                    "Default": {
                        "authenticationFlowType": "USER_SRP_AUTH",
                        "OAuth": {
                            "WebDomain": "************",
                            "AppClientId": "************",
                            "AppClientSecret": "************",
                            "SignInRedirectURI": "************://",
                            "SignOutRedirectURI": "",
                            "Scopes": ["openid", "email"]
                        }
                    }
                }
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:37:47