2

我正在使用 Firebase 在我们的应用程序中实现社交登录。我在 Facebook 登录时遇到了一个奇怪的问题,似乎无法更改帐户。让我解释:

  1. 用户点击使用 Facebook 登录按钮
  2. Web 视图或浏览器打开
  3. 用户使用其凭据登录
  4. 一切正常,用户可以使用我们的应用程序
  5. 用户在应用程序内注销
  6. 用户想用不同的帐户登录 facebook,然后单击使用 facebook 按钮登录
  7. 目前,无法更改 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,但我仍然遇到同样的问题。

4

1 回答 1

0

根据下面的文档,它不能切换用户

注意 Android 和 iOS SDK 目前不支持重新认证。

https://developers.facebook.com/docs/facebook-login/reauthentication/

于 2021-12-22T10:50:23.883 回答