Android平台Facebook登录时回调函数未被调用是什么原因?
问题排查方案
- 回调未收到页面返回结果(最高发原因)
Facebook SDK的回调依赖页面返回结果的分发,你有两处配置大概率出错:- 你目前把
callbackManager定义为onCreateView方法内的局部变量,方法执行结束后该实例就会被回收,后续无法接收回调,需要改为Fragment的全局成员变量 - 你没有重写Fragment的
onActivityResult方法,需要在该方法内将入参透传给callbackManager.onActivityResult(requestCode, resultCode, data);如果依附的Activity也重写了onActivityResult,还要确保Activity调用了super.onActivityResult(),否则返回结果不会分发给Fragment。
如果你用的是v13以上版本的AndroidX Fragment,或是最新版Facebook SDK,原有基于onActivityResult的回调方案已经被废弃,需要改用Activity Result API实现回调接收,旧注册逻辑会直接失效。
- 你目前把
- Logcat过滤规则错误
先检查Logcat的配置是否正确:- 日志级别是否选择了
Warn及更低级别,若选中了Error,所有Log.w的警告级日志都会被过滤 - 过滤模式是否选择了「仅显示选中应用」,避免其他应用的日志干扰
- 你定义的
Tag常量是否拼写正确,搜索框是否误输入了其他过滤关键词
- 日志级别是否选择了
- Facebook登录基础配置异常
以下配置错误会导致SDK收不到登录结果:- AndroidManifest.xml中没有正确配置
com.facebook.sdk.ApplicationId元数据,或是缺少必要的网络权限 - Facebook开发者后台没有正确登记应用的包名、签名哈希,测试用的账号没有加入应用的开发/测试人员名单
- 走网页登录流程的话,后台没有配置正确的OAuth跳转地址
- AndroidManifest.xml中没有正确配置
- 登录流程未正常触发
如果你没有直接使用Facebook原生登录按钮的默认点击逻辑,而是自定义了登录按钮的点击事件,需要手动调用LoginManager.getInstance().logInWithReadPermissions()方法发起登录请求,否则不会走SDK的登录流程,自然不会触发回调。
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

