我正在使用 Firebase 在我们的应用程序中实现社交登录。我在 Facebook 登录时遇到了一个奇怪的问题,似乎无法更改帐户。让我解释:
- 用户点击使用 Facebook 登录按钮
- Web 视图或浏览器打开
- 用户使用其凭据登录
- 一切正常,用户可以使用我们的应用程序
- 用户在应用程序内注销
- 用户想用不同的帐户登录 facebook,然后单击使用 facebook 按钮登录
- 目前,无法更改 Facebook 帐户。webview不允许你。
我试图清理应用程序缓存,删除应用程序,没有工作。在 Android 上,我需要清除浏览器缓存,或从浏览器中注销 Facebook,然后才能使用新帐户正确登录 FB。在 iOS 上,即使删除 Safari 缓存,一切都将不起作用。
社交登录是按照官方文档实现的,是这样的:
Future<UserCredential?> signInWithFacebook() async {
try {
if ( await FacebookAuth.instance.accessToken != null )
await logoutFacebook();
// Trigger the sign-in flow
LoginResult loginResult;
loginResult = await FacebookAuth.instance.login(
permissions: ['email', 'public_profile'],
loginBehavior: LoginBehavior.webOnly,
);
if (loginResult.status == LoginStatus.success) {
final AccessToken accessToken = loginResult.accessToken!;
final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(accessToken.token);
return await FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);
} else
throw loginResult.status.toString() + "\n" + loginResult.message.toString();
} catch (e) {
LoggerService().error("FACEBOOK LOGIN ERROR", e.toString());
FacebookAuth.instance.logOut();
return null;
}
}
目前我受限于 Flutter 1.22.6,所以我只能使用这些 firebase 包:
firebase_messaging: ^10.0.7
flutter_local_notifications: ^8.2.0
firebase_crashlytics: ^2.2.1
firebase_core: ^1.6.0
firebase_auth: ^3.1.1
flutter_facebook_auth: ^3.5.2
您对如何解决此问题有任何想法吗?
此致
编辑:将所有内容重构为 Flutter 2,但我仍然遇到同样的问题。