使用Expo Cli实现Facebook登录时触发已读取异常问题咨询
我之前在Expo里做Facebook登录功能时,也遭遇过一模一样的“已读取异常”,前后折腾了好几个小时才找到症结,给你整理几个亲测有效的排查和解决方向:
核对Facebook开发者平台配置细节
这是最容易踩坑的地方!首先确认你的Facebook App ID、App Secret和facebookScheme有没有在Expo项目的app.json/app.config.js里配置准确,特别是facebookScheme必须是fb+你的App ID(比如fb123456789)。举个配置示例:"expo": { "facebookScheme": "fb123456789", "facebookAppId": "123456789", "facebookDisplayName": "你的应用名称" }同时要去Facebook开发者后台的产品 > Facebook登录 > 设置里,把
Valid OAuth Redirect URIs设置成https://auth.expo.io/@你的Expo用户名/你的项目slug——这个URI可以在你的Expo项目发布页面直接找到,千万别写错。更新Expo相关依赖和CLI
旧版本的Expo CLI或者expo-facebook包可能存在兼容性bug,试试更新到最新稳定版:expo update expo install expo-facebook更新完成后记得重启开发服务器,并且用
expo r -c清空项目缓存,避免旧配置残留。检查测试账号与权限配置
如果是开发测试阶段,要确保你的测试账号已经被添加到Facebook开发者后台的角色 > 测试用户列表里,而且应用处于「开发模式」。另外,expo-facebook请求的权限(比如public_profile、email)也要在后台的产品 > Facebook登录 > 权限与功能里开启。部署生产环境的额外校验
部署到线上后出现异常的话,首先要把Facebook应用从「开发模式」切换到「上线模式」,然后确认生产环境的域名已经添加到后台设置 > 基本 > 应用域,同时网站 > 站点URL也要配置正确,否则会出现跨域或者重定向失败的问题。深挖异常日志找根源
如果上面的方法都没解决问题,打开Expo的调试模式,在Chrome控制台里查看详细错误日志,或者用expo logs命令获取设备端的日志——有时候“已读取异常”只是表面提示,实际的错误原因(比如权限缺失、配置不匹配)会在日志里明确显示。
内容的提问来源于stack exchange,提问作者Divyesh Joshi

