使用Facebook iOS SDK登录遇Invalid Scopes错误求助排查
解决Facebook iOS登录「Invalid Scopes: public_profile, openid」问题
检查Facebook应用的登录产品配置
登录Facebook开发者后台,找到你的应用,进入「产品」->「Facebook登录」->「设置」:- 如果「客户端OAuth设置」里的「使用Strict模式」是开启状态,必须把
public_profile和openid添加到「允许的OAuth范围」中; - 确认iOS平台的「有效的OAuth跳转URI」配置正确,格式一般为
fb{你的应用ID}://authorize,注意不要写错应用ID。
- 如果「客户端OAuth设置」里的「使用Strict模式」是开启状态,必须把
调整权限请求代码
在SDK 15.x版本中,public_profile是默认权限,不需要手动添加到请求权限列表里;openid属于OpenID Connect范畴,需要先在后台开启对应功能。如果你的代码里手动指定了public_profile,直接移除即可:// 错误写法:手动添加了默认权限public_profile let loginManager = LoginManager() loginManager.logIn(permissions: ["public_profile", "openid", "email"], viewController: self) // 修改后的写法 let loginManager = LoginManager() loginManager.logIn(permissions: ["openid", "email"], viewController: self)确认权限的可用状态
进入「应用审核」->「权限与功能」,查看public_profile和openid的状态,即使是开发模式,也要确保它们处于「开发中可用」或「已批准」状态。另外,需要在「Facebook登录」设置页面专门开启「OpenID Connect」选项。核对info.plist配置项
再次检查info.plist的关键配置:FacebookAppID、FacebookDisplayName不能有拼写错误;LSApplicationQueriesSchemes必须包含fbapi、fb-messenger-share-api、fbauth2、fbshareextension这几个字段,缺一不可。
清除缓存重试
iOS真机上,进入「设置」找到Facebook入口(如果存在),注销登录的账号后重启设备;模拟器可以直接重置内容和设置,之后再测试登录功能。
内容的提问来源于stack exchange,提问作者user2872885
相关产品推荐
相关产品推荐

