Flutter Flatter-如何使用Firebase facebook和google插件链接社交帐户

Flutter Flatter-如何使用Firebase facebook和google插件链接社交帐户,flutter,flutter-plugin,Flutter,Flutter Plugin,我有一个颤振的应用程序,并希望用户与FB和谷歌认证。我不想多个帐户,只是一个单一的帐户,链接这两个 我正在使用: firebase_auth 0.15.1 谷歌4.0.14中的签名 facebook_插件3.0.0 当用户的帐户已存在于其他提供商时,我无法获取该用户的电子邮件地址。为了使用API调用“FetchSigningMethodsForemail”获取该用户的提供者列表,需要该电子邮件 以下是一个例子: 1:使用Google凭据进行用户登录。该帐户是在firebase中创建的,并链接到g

我有一个颤振的应用程序,并希望用户与FB和谷歌认证。我不想多个帐户,只是一个单一的帐户,链接这两个

我正在使用:

firebase_auth 0.15.1

谷歌4.0.14中的签名

facebook_插件3.0.0

当用户的帐户已存在于其他提供商时,我无法获取该用户的电子邮件地址。为了使用API调用“FetchSigningMethodsForemail”获取该用户的提供者列表,需要该电子邮件

以下是一个例子: 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;
  }
未来登录与Facebook({bool isIos})异步{
认证证书;
试一试{
最终FacebookLoginResult结果=等待facebookLogin.logIn(['email']);
if(result.accessToken!=null){
credential=FacebookAuthProvider.getCredential(
accessToken:result.accessToken.token
);
AuthResult AuthResult=等待_firebaseAuth.signiWithCredential(
资质
);
firebaseUser=authResult.user;
返回firebaseUser;
}捕获(e){
抛出异常(e);
}
返回null;
}
谢谢你的帮助