React Native集成Facebook登录出现FBAccessToken模块覆盖错误如何解决?
问题原因
FBAccessToken模块被重复注册,React Native 0.60+版本的自动链接机制会自动加载react-native-fbsdk-next的原生模块,出现该报错一般是旧依赖残留、或手动重复添加FBSDK原生包导致的。另外注意报错指向的是MainApplication.java,无需排查MainActivity.java文件。
解决方案
- 第一步:清理旧的Facebook SDK依赖
如果你之前安装过旧版react-native-fbsdk,先执行卸载命令:
完成后清除本地缓存:npm uninstall react-native-fbsdk # 用yarn的话执行 yarn remove react-native-fbsdkrm -rf node_modules && npm install npm start -- --reset-cache # 清理安卓构建缓存 cd android && ./gradlew clean && cd .. - 第二步:检查原生配置文件的重复配置
- 你提供的
MainApplication.java代码里没有手动添加FBSDK包的代码,符合自动链接的要求,如果之前手动加过packages.add(new FBAccessTokenModule())这类代码,直接删除即可。 - 检查
android/settings.gradle文件,删除所有和react-native-fbsdk相关的引入配置,react-native-fbsdk-next的配置会由自动链接自动生成,无需手动添加。 - 检查
android/app/build.gradle的dependencies块,删除旧的FBSDK依赖配置,比如implementation "com.facebook.android:facebook-login:xxx"或者implementation project(':react-native-fbsdk')这类代码。
- 你提供的
- 第三步:排查子依赖的冲突
执行以下命令检查是否有其他第三方依赖间接引入了旧版FBSDK:
如果有子依赖引入了旧包,在npm ls react-native-fbsdkpackage.json中添加resolutions配置强制使用统一版本,或者对对应依赖的FBSDK做exclude处理即可。
内容的提问来源于stack exchange,提问作者Zippy Zebra
相关产品推荐
相关产品推荐

