Android 升级到 Facebook SDK 12.0.0(或 13)后,CallbackManager 回调停止工作
Android CallbackManager call back stopped working after upgrading to Facebook SDK 12.0.0 (Or 13)
我有一个 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 class 中,我有以下代码:
@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 registered 被触发。
升级到Facebook SDK 13.0.0后(我试过12.0.0也有同样的问题),用户登录Facebook后,调用了onActivityResult,但是没有调用FacebookCallback。
因此我的登录过程中断了。
有人遇到同样的问题吗?解决方法是?
根据 post:
How to use Facebook Sign in CallbackManager with onActivityResult deprecated?
好像是Facebook Android SDK 12之后,使用的方法
onActivityResult
已弃用。截至今天,我正在 post 回答这个问题 (2/March/2022),Facebook 官方开发者文档:https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback
还在告诉大家Facebook登录的老办法
我希望这个post可以帮助其他面临同样问题的人。
以下是解决方法
解决方案:
删除
callbackManager.onActivityResult(requestCode, resultCode, data);
来自 onActivityResult
使用权限设置您的 Facebook 按钮
登录按钮 mLoginButton = findViewById(R.id.login_button);
mLoginButton.setPermissions(Arrays.asList("public_profile", "电子邮件"));
用您的 LoginButton 实例替换 LoginManager。变化:
LoginManager.getInstance().registerCallback(callbackManager,
新的 FacebookCallback() {
更改为:
mLoginButton.registerCallback(回调管理器,
新的 FacebookCallback() {
我有一个 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 class 中,我有以下代码:
@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 registered 被触发。
升级到Facebook SDK 13.0.0后(我试过12.0.0也有同样的问题),用户登录Facebook后,调用了onActivityResult,但是没有调用FacebookCallback。
因此我的登录过程中断了。
有人遇到同样的问题吗?解决方法是?
根据 post: How to use Facebook Sign in CallbackManager with onActivityResult deprecated?
好像是Facebook Android SDK 12之后,使用的方法
onActivityResult
已弃用。截至今天,我正在 post 回答这个问题 (2/March/2022),Facebook 官方开发者文档:https://developers.facebook.com/docs/facebook-login/android/#9--register-a-callback 还在告诉大家Facebook登录的老办法
我希望这个post可以帮助其他面临同样问题的人。
以下是解决方法
解决方案:
删除
callbackManager.onActivityResult(requestCode, resultCode, data); 来自 onActivityResult
使用权限设置您的 Facebook 按钮
登录按钮 mLoginButton = findViewById(R.id.login_button); mLoginButton.setPermissions(Arrays.asList("public_profile", "电子邮件"));
用您的 LoginButton 实例替换 LoginManager。变化:
LoginManager.getInstance().registerCallback(callbackManager, 新的 FacebookCallback() { 更改为:
mLoginButton.registerCallback(回调管理器, 新的 FacebookCallback() {