2

我有一个颤振的应用程序,并希望用户同时使用 FB 和 Google 进行身份验证。我不想要多个帐户,只需要一个链接两者的帐户。

我在用 :

firebase_auth 0.15.1

google_sign_in 4.0.14

facebook_plugin 3.0.0

当用户的帐户已经存在于不同的提供商时,我无法获取用户的电子邮件地址。需要该电子邮件才能使用 API 调用“fetchSignInMethodsForEmail”获取该用户的提供商列表

下面是一个示例: 1:用户使用 Google 凭据登录。该帐户是在 firebase 中创建的,并且 google 已链接 2:用户现在注销 3:用户现在尝试使用相同的电子邮件登录 FB。

-- 用户收到以下错误

code:"ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL"
details: null
message: "An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address., **null**))

如您所见,电子邮件为空。我需要电子邮件才能获取提供商列表。然后我可以将用户重定向到正确的提供者

这是我的代码片段

Future<FirebaseUser> signInWithFacebook({bool isIos}) async {
 AuthCredential credential;
 try {
  final FacebookLoginResult result = await facebookLogin.logIn(['email']);
  if (result.accessToken != null) {
     credential = FacebookAuthProvider.getCredential(
            accessToken: result.accessToken.token
     );
     AuthResult authResult = await _firebaseAuth.signInWithCredential(
          credential,
     );
     firebaseUser = authResult.user;
        return firebaseUser;
    } catch (e) {
      throw Exception(e);
    }
    return null;
  }

谢谢你的帮助

4

0 回答 0