我有一个颤振的应用程序,并希望用户同时使用 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;
}
谢谢你的帮助