[英]Android CallbackManager call back stopped working after upgrading to Facebook SDK 12.0.0 (Or 13)
I have an Android app that does login via Facebook. Everything was working when I was on Facebook SDK我有一个 Android 应用程序,它通过 Facebook 登录。当我使用 Facebook SDK 时一切正常
implementation 'com.facebook.android:facebook-android-sdk:11.1.1'
However, recently I noticed in my Gradle file that there is an update available for Facebook SDK, so I updated it to但是,最近我注意到在我的 Gradle 文件中有 Facebook SDK 可用的更新,所以我将其更新为
implementation 'com.facebook.android:facebook-android-sdk:13.0.0'
And then the problem happens.然后问题发生了。
Before I have my code setup like the following:在我进行如下代码设置之前:
private void facebookSignInSetup() {
//Facebook login setup
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
....
}
And in my Activity class I have the following code:在我的活动 class 中,我有以下代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
......
}
When I was on Facebook SDK 11.1.1, after user login via Facebook, method: onActivityResult is fired then FacebookCallback registered is fired.当我在 Facebook SDK 11.1.1 时,用户通过 Facebook 登录后,方法:onActivityResult 被触发,然后 FacebookCallback 注册被触发。
After upgrading to Facebook SDK 13.0.0 (I tried 12.0.0 also having the same problem), after the user login to Facebook, onActivityResult is called, however, FacebookCallback is not called.升级到Facebook SDK 13.0.0后(我试过12.0.0也有同样的问题),用户登录Facebook后,调用了onActivityResult,但是没有调用FacebookCallback。
Hence my login process is broken.因此我的登录过程被打破了。
Anyone has the same problem and is the resolution?任何人都有同样的问题,是解决方案吗?
According to the post: How to use Facebook Sign in CallbackManager with onActivityResult deprecated?根据帖子: How to use Facebook Sign in CallbackManager with onActivityResult deprecated?
It seems after Facebook Android SDK 12, the approach of using好像Facebook Android SDK 12、使用方法
onActivityResult onActivityResult
is deprecated.已弃用。 And as of today, I am posting this question (2/March/2022), Facebook official developer document: https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback is still telling everyone the old way of doing Facebook login.从今天开始,我发布了这个问题(2/March/2022),Facebook 官方开发者文档: https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback还在告诉大家老办法Facebook登录。
I hope this post could help others facing the same problem.我希望这篇文章可以帮助其他面临同样问题的人。
The following are the solution以下是解决方案
Sample code: https://github.com/facebook/facebook-android-sdk/blob/main/samples/FBLoginSample/src/main/java/com/facebook/fbloginsample/FacebookLoginActivity.java示例代码: https://github.com/facebook/facebook-android-sdk/blob/main/samples/FBLoginSample/src/main/java/com/facebook/fbloginsample/FacebookLoginActivity.java
Solution:解决方案:
Remove消除
callbackManager.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); from onActivityResult来自 onActivityResult
Setup your Facebook button with permission使用权限设置您的 Facebook 按钮
LoginButton mLoginButton = findViewById(R.id.login_button); LoginButton mLoginButton = findViewById(R.id.login_button); mLoginButton.setPermissions(Arrays.asList("public_profile", "email")); mLoginButton.setPermissions(Arrays.asList("public_profile", "email"));
Replace LoginManager with your LoginButton instance.将 LoginManager 替换为您的 LoginButton 实例。 Change:改变:
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() { Change to: LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() { 更改为:
mLoginButton.registerCallback(callbackManager, new FacebookCallback() { mLoginButton.registerCallback(callbackManager, new FacebookCallback() {
Emil's comment is correct we can't use loginButton solution with LoginManger. Emil 的评论是正确的,我们不能将 loginButton 解决方案与 LoginManger 一起使用。 But after several hours of experiments I solved it by downgrading the dependencies version please refer this: https://stackoverflow.com/a/74490644/13694485但经过几个小时的实验,我通过降级依赖版本解决了这个问题,请参考: https://stackoverflow.com/a/74490644/13694485
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.