react-native-gigya-sdk集成Apple/Facebook社交登录报401错误
社交登录401错误问题说明
使用Apple ID或Facebook App端进行社交登录时会抛出401错误,返回的错误对象如下:
{ "code": "userCancelled", "message": "{\"callId\":\"a22e2c0a54fa40ef86e55161771cbb60\",\"statusCode\":201,\"errorCode\":401022,\"requestData\":\"ew0KICAiY2FsbElkIjogImEyMmUyYzBhNTRmYTQwZWY4NmU1NTE2MTc3MWNiYjYwIiwNCiAgImVycm9yQ29kZSI6IDQwMTAyMiwNCiAgImVycm9yTWVzc2FnZSI6ICJMb2dpbiBGYWlsZWQiLA0KICAiYXBpVmVyc2lvbiI6IDIsDQogICJzdGF0dXNDb2RlIjogNDAxLA0KICAic3RhdHVzUmVhc29uIjogIlVuYXV0aG9yaXplZCIsDQogICJ0aW1lIjogIjIwMjItMDYtMDdUMTc6MzU6NDIuNDI5WiIsDQogICJlcnJvckRldGFpbHMiOiAiNDAxMDIyIC0gTG9naW4gRmFpbGVkIg0KfQ==\",\"errorMessage\":\"Login Failed\"}", "name": "Error", "payload": { "apiVersion": 2, "callId": "a22e2c0a54fa40ef86e55161771cbb60", "errorCode": 401022, "errorDetails": "401022 - Login Failed", "errorMessage": "Login Failed", "statusCode": 401, "statusReason": "Unauthorized", "time": "2022-06-07T17:35:42.429Z" } }
基于react-native-gigya-sdk实现社交登录功能时,实测Gmail登录、Facebook网页端登录可正常运行,仅Apple ID登录、Facebook App端登录会触发上述错误。
项目依赖版本
"react-native": "0.66.3", "react-native-gigya-sdk": "1.1.1"
问题排查与修复
- 配置校验
优先核对两端的参数配置:- Apple登录:确认Gigya后台配置的Apple服务参数(Team ID、Key ID、私钥)和Apple开发者后台信息完全一致,App端已开启Sign in with Apple能力,Bundle ID、Associated Domains配置无误。
- Facebook App登录:确认Facebook开发者后台填写的iOS/Android端包名、签名哈希、Bundle ID准确,Gigya后台存储的Facebook App ID、应用密钥正确,已开启原生应用登录权限。
- SDK原生逻辑缺陷
1.1.1版本的react-native-gigya-sdk存在原生登录回调的已知bug:唤起本地安装的Facebook App、系统级Apple登录组件完成授权后,SDK无法正确解析回传的授权凭证,会直接判定登录失败抛出401022错误,外层还会错误标记userCancelled状态,和用户主动取消授权的错误混在一起。
修复方式可选:- 打本地补丁修改SDK源码:修正iOS端
GigyaSocialLogin.m的Apple登录回调解析逻辑、Android端GigyaSdkModule.java的Facebook登录结果接收逻辑,保证授权成功后获取的accessToken、idToken可以正常透传给Gigya校验接口。 - 临时绕过:将Facebook登录、Apple登录强制切换为网页授权模式,跳过原生端登录的回调缺陷,等SDK官方修复对应问题后再切回原生登录模式。注意:使用网页授权需要提前在对应平台的开发者后台配置正确的回调域名,否则会出现跳转失败问题。
- 打本地补丁修改SDK源码:修正iOS端
- 权限策略检查
确认Gigya后台的社交登录策略中,已为当前应用开启Apple、Facebook原生登录权限,没有设置端侧、IP维度的访问拦截规则。
内容的提问来源于stack exchange,提问作者Florin Dobre
相关产品推荐
相关产品推荐

