iOS App使用Facebook SDK登录时跳转原生应用身份验证失败求助
问题排查方案
一、异常报错根因排查方向
- Facebook开发者平台配置校验
- 确认iOS平台的Bundle ID与当前打包的应用完全一致,注意大小写、后缀不要出现误差
- 检查「iOS 单点登录」开关是否已开启,该配置项位于Facebook开发者后台「应用」-「设置」-「基本」-「iOS」板块下
- 确认应用的公开状态是否为已上线,如果处于开发模式,只有后台添加的测试账号可以正常登录,非测试账号登录就会触发该报错
- 校验info.plist内的
FacebookAppID、FacebookDisplayName字段,是否和后台配置完全匹配
- SDK逻辑校验
- 9.3.0版本的Facebook SDK需要在应用启动时完成初始化,确认你在
didFinishLaunchingWithOptions方法中添加了[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];代码 - 确认你申请的权限列表没有包含Facebook未审核通过的高级权限,未审核的权限在非测试账号使用时会触发登录失败
- 9.3.0版本的Facebook SDK需要在应用启动时完成初始化,确认你在
- 应用logo不显示问题排查
- 检查Facebook开发者后台「应用设置」-「基本信息」里上传的logo尺寸是否符合平台要求,是否已经过审核生效,新上传的logo最长可能有24小时的缓存时间
二、「Log In With the Facebook App」场景复现方法
Facebook SDK 9.x版本会自动判断登录方式,触发跳转原生App登录的条件如下:
- 设备已安装Facebook官方应用,且用户已在Facebook App中登录账号
- 设备iOS版本≥13,且用户未给你的应用授予「跨应用跟踪权限」(IDFA权限),SDK会优先走原生App登录而不是内建webview
- 你的应用在info.plist中添加了LSApplicationQueriesSchemes配置,包含fbauth2、fbapi等Facebook相关的scheme,SDK检测到可以跳转Facebook App就会优先走该流程
你可以按以下操作复现问题:
- 在iPhone上安装最新版Facebook App并登录账号
- 卸载你设备上已安装的测试应用,重新安装,首次启动时如果弹出跟踪权限申请,选择「不允许」
- 进入应用点击Facebook登录按钮,即可触发跳转原生App的登录流程
三、临时规避方案
如果短时间内无法定位配置问题,可以强制SDK走内建webview登录流程,规避跳转Facebook App的场景,代码如下:
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; loginManager.loginBehavior = FBSDKLoginBehaviorWeb;
内容的提问来源于stack exchange,提问作者Zhang Zhan
相关产品推荐
相关产品推荐

