我有一个Android应用程序,可以通过Facebook登录。当我在Facebook SDK上时,一切都在工作
implementation 'com.facebook.android:facebook-android-sdk:11.1.1'
但是,最近我注意到在我的Gradle文件中有一个适用于Facebook SDK的更新,所以我将其更新为
implementation 'com.facebook.android:facebook-android-sdk:13.0.0'
然后问题就发生了。
在我有我的代码设置如下:
private void facebookSignInSetup() {
//Facebook login setup
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
....
}
在我的Activity类中,我有以下代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
......
}
当我在Facebook SDK 11.1.1上,用户通过Facebook登录后,方法:触发onActivityResult,然后触发已注册的FacebookCallback。
升级到Facebook SDK 13.0.0后(我尝试了12.0.0也有同样的问题),用户登录Facebook后,调用了onActivityResult,但没有调用FacebookCallback。
因此,我的登录过程中断。
任何人都有同样的问题,解决方案是什么?
2条答案
按热度按时间rlcwz9us1#
根据帖子:How to use Facebook Sign in CallbackManager with onActivityResult deprecated?
看来Facebook Android SDK 12之后,使用的方法
活动结果
今天,我发布这个问题(2/March/2022),Facebook官方开发者文档:https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback仍然在告诉大家Facebook登录的老方法。
我希望这篇文章能帮助其他面临同样问题的人。
以下是解决方案
样本代码:https://github.com/facebook/facebook-android-sdk/blob/main/samples/FBLoginSample/src/main/java/com/facebook/fbloginsample/FacebookLoginActivity.java
解决方法:
1.移除
(请求代码,结果代码,数据);来自活动结果
1.设置您的Facebook按钮的权限
登录按钮mLoginButton =查找按标识查看(R.id.登录按钮);“公共配置文件”,“电子邮件”);
1.将LoginManager替换为您的LoginButton示例。更改:
登录管理器.getInstance().registerCallback(回调管理器,新的Facebook回调(){更改为:
注册回叫(回叫管理器,新的Facebook回叫(){
rnmwe5a22#
Emil的评论是正确的,我们不能在LoginManger中使用loginButton解决方案。但是经过几个小时的实验,我通过降级依赖版本解决了这个问题,请参考:https://stackoverflow.com/a/74490644/13694485