如何使用Firebase身份验证将帐户与其他提供商链接?

时间:2019-10-24 17:07:06

标签: firebase flutter dart firebase-authentication

我正在使用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]解决此问题,然后要求用户使用其中之一进行登录。”

但是如果抛出异常,我如何从登录意图中检索电子邮件?

0 个答案:

没有答案