【问题标题】:Reauthenticate user with Facebook使用 Facebook 重新验证用户身份
【发布时间】:2021-07-01 15:11:59
【问题描述】:

我正在使用 Flutter 创建一个移动应用程序。我正在使用 Firebase 进行身份验证。我的用户使用 Facebook 登录。用户在删除帐户时应重新验证自己的身份。该文档讨论了使用电子邮件和密码进行重新身份验证,如下所示:

// Create a credential
EmailAuthCredential credential = EmailAuthProvider.credential(email: email, password: password);

// Reauthenticate
await FirebaseAuth.instance.currentUser.reauthenticateWithCredential(credential);

由于用户没有电子邮件和密码,而是使用 Facebook 登录,因此我应该使用 Facebook 重新验证用户身份。我为此搜索了文档,但没有运气。

谁能好心告诉我怎么做。

我尝试用 Facebook 登录用户(即使他已经登录)但没有成功。她是我试过的:

FacebookLoginResult result = await FacebookLogin().logIn(permissions: [
  FacebookPermission.publicProfile,
  FacebookPermission.email,
]);

switch (result.status) {
  case FacebookLoginStatus.success:
    FacebookAccessToken? accessToken = result.accessToken;
    if (accessToken == null) {
      return null;
    }

    UserCredential userCredential = await _auth.signInWithCredential(
      FacebookAuthProvider.credential(accessToken.token),
    );
    return userCredential;

  case FacebookLoginStatus.cancel:
    throw FirebaseAuthException(
      code: 'ERROR_FACEBOOK_LOGIN_FAILED',
      message: result.error?.developerMessage,
    );
  default:
    throw UnimplementedError();
}

await FirebaseAuth.instance.currentUser?.reauthenticateWithCredential(
  userCredential!.credential!,
);

【问题讨论】:

    标签: firebase flutter firebase-authentication


    【解决方案1】:

    通过 Google 获取身份验证凭据

    final GoogleSignIn _googleSignIn = GoogleSignIn(
    scopes: <String>[
      'email',
      'https://www.googleapis.com/auth/contacts.readonly',
    ]);
    
     final GoogleSignInAccount googleSignInAccount =
        await _googleSignIn.signIn();
    final GoogleSignInAuthentication googleSignInAuthentication =
        await googleSignInAccount.authentication;
    
    final AuthCredential credential = GoogleAuthProvider.credential(
      accessToken: googleSignInAuthentication.accessToken,
      idToken: googleSignInAuthentication.idToken,
    );
    

    通过 Apple 获取身份验证凭据

    final appleIdCredential = await SignInWithApple.getAppleIDCredential(
      scopes: [
        AppleIDAuthorizationScopes.email,
        AppleIDAuthorizationScopes.fullName,
      ],
    );
    final AuthCredential appleCredential =
        OAuthProvider('apple.com').credential(
      accessToken: appleIdCredential.authorizationCode,
      idToken: appleIdCredential.identityToken,
    );
    

    【讨论】:

    • 如果用户已经使用 Google 登录,您能否使用您的代码重新对用户进行身份验证。我正在使用与您相同的代码。我的用户已经登录,但是当我重新验证时,我得到了错误。我不知道为什么!
    • 我不是在问您如何通过 Google 或 Facebook 进行身份验证。我在问如何使用谷歌或 Facebook 重新认证。例如,该用户已经使用 Facebook 登录,我需要删除该用户,因此我需要使用 Facebook 重新验证该用户才能删除该用户。
    猜你喜欢
    • 2016-09-27
    • 2021-10-02
    • 2020-10-13
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2011-02-08
    • 2011-08-29
    • 2013-02-04
    相关资源
    最近更新 更多