Google 签名出现颤动错误 firebase_auth/provider-already-linked

问题描述 投票:0回答:1

我正在使用 flutter 和 google 通过 firebase (移动应用程序)与 laravel 后端登录,该应用程序通过 api 网站 url 连接 问题是,当我使用 google auth 登录时,它运行良好,当我注销时,我无法再次登录,我在 android studio 终端 firebase_auth/provider-already-linked 中收到此错误消息]? 如果我从后端数据库中删除用户,我可以再次登录 这是我的代码,如果有人有想法?

Future<User> signInWithGoogle(BuildContext context) async {
final GoogleSignIn googleSignIn = GoogleSignIn();
GoogleSignInAccount? googleSignInAccount = await googleSignIn.signIn();

if (googleSignInAccount != null) {
  final GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication;

  final AuthCredential credential = GoogleAuthProvider.credential(
    accessToken: googleSignInAuthentication.accessToken,
    idToken: googleSignInAuthentication.idToken,
  );

  final UserCredential authResult = await FirebaseAuth.instance.signInWithCredential(credential);
  final User user = authResult.user!;

  assert(!user.isAnonymous);

  final User currentUser = FirebaseAuth.instance.currentUser!;
  assert(user.uid == currentUser.uid);

  try {
    AuthCredential emailAuthCredential = EmailAuthProvider.credential(email: user.email!, password: DEFAULT_FIREBASE_PASSWORD);
    user.linkWithCredential(emailAuthCredential);
  } catch (e) {
    log(e);
  }

  await googleSignIn.signOut();

  return user;
} else {
  appStore.setLoading(false);
  throw USER_NOT_CREATED;
}

}

flutter firebase firebase-authentication
1个回答
0
投票

我认为您只是从 Google 登录中退出。您还必须从 Firebase Auth 实例注销。

在你的代码中尝试一下,

await googleSignIn.signOut();
await FirebaseAuth.instance.signOut();

您也可以参考我下面的代码


final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;

Future<void> googleSignOut() async {
  try {
  await _googleSignIn.signOut();
  await _auth.signOut();
  print('Signed out successfully');
  } catch (e) {
  print('Error signing out: $e');
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.