我正在使用 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;
}
}
我认为您只是从 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');
}
}