我正在使用flutter Firebase库进行身份验证,要求使用Facebook,google和电子邮件以及密码登录,如果电子邮件与数据库中已有的电子邮件匹配,我想链接一个帐户,我正在执行的流程是: 1-用户未登录 2-用户使用Google登录 3-登录成功 4-用户注销 5-用户使用相同的电子邮件地址登录Facebook 6- PlatformException ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL
因此,我试图使用linkWithCredentials,但它需要一个currentUser
我的代码
if (val.status == FacebookLoginStatus.loggedIn) {
final AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: val.accessToken.token);
try {
var credentialResult =await _auth.signInWithCredential(credential);
if(credentialResult.user != null){
user = credentialResult.user;
}
updateUserData(user);
loading.add(false);
if (Platform.isIOS) {
Navigator.of(context, rootNavigator: true).pop();
}
return user;
} on PlatformException catch (e,stack) {
print(stack);
print(e.code);
loading.add(false);
switch (e.code) {
case 'ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL':
break;
}
} catch (e){
print('hasdad $e');
}
}
我还阅读了源代码,可以“通过调用[fetchSignInMethodsForEmail]解决此问题,然后要求用户使用其中之一进行登录。”
但是如果抛出异常,我如何从登录意图中检索电子邮件?