我将 Flutter 与 Firebase 结合使用。当我尝试使用电子邮件和密码注销时,效果很好,但当我尝试使用谷歌时,它不起作用。
这是我的代码:
`
try {
switch (user.providerData[0].providerId) {
case 'password':
await FirebaseAuth.instance.signOut();
break;
case 'google.com':
final GoogleSignIn googleSignIn = GoogleSignIn();
await googleSignIn.signOut();
break;
}
} on FirebaseAuthException catch (e) {
showAuthException(e, context);
}
`
我正在尝试这个
`
try {
switch (user.providerData[0].providerId) {
case 'password':
await FirebaseAuth.instance.signOut();
break;
case 'google.com':
final GoogleSignIn googleSignIn = GoogleSignIn();
await googleSignIn.signOut();
break;
}
} on FirebaseAuthException catch (e) {
showAuthException(e, context);
}
`
请参考这段代码:) 这就能解决问题。
您的代码:
final GoogleSignIn googleSignIn = GoogleSignIn();
await googleSignIn.signOut();
问题是您已经创建了 googleSignIn 变量并从该变量中退出。
你也可以尝试使用检查googleSignIn.isSignedIn();
这将返回布尔值。
工作代码。
class GoogleServiceProvider extends ChangeNotifier {
static final GoogleSignIn _googleSignIn = GoogleSignIn(); // <----
GoogleSignInAccount? _user;
GoogleSignInAccount? get user => _user;
Future<GoogleSignInAccount?> logInWithGmail() async {
final googleUser = await _googleSignIn.signIn();
if (googleUser != null) {
_user = googleUser;
notifyListeners();
}
return null;
}
Future logOut() async {
await _googleSignIn.signOut();
notifyListeners();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)