mik*_*ssy 5 firebase-authentication google-signin flutter
我正在努力实现一个使用 Firebase 身份验证和 Google-Sign 的 Flutter 应用程序。我已经成功地让 firebaseauth 正常登录/注销,没有问题。根据 authstate 更改,我定向到主页或登录页面。然后我实现了 Google Sign-in,它会自动将用户登录到 firebase。
这有效,我获得了提示等必要的权限。但是当我点击注销时,应用程序不会重定向到登录屏幕。我正在调用 await firebaseAuth.instance.Signout() ......我相信它确实删除了用户......但它不会重定向。然后,当我再次尝试登录时,没有任何反应。
我尝试了许多不同的登录变体。我似乎无法弄清楚为什么它不会在注销时重定向。
这是我登录 Google 和 firebase 的登录逻辑:
try {
final GoogleSignInAccount googleSignInAccount =
await _googleSignIn.signIn();
final GoogleSignInAuthentication googleSignInAuthentication =
await googleSignInAccount.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleSignInAuthentication.accessToken,
idToken: googleSignInAuthentication.idToken,
);
final FirebaseUser user = await _firebaseAuth.signInWithCredential(credential);
assert(!user.isAnonymous);
assert(await user.getIdToken() != null);
final FirebaseUser currentUser = await _firebaseAuth.currentUser();
assert(user.uid == currentUser.uid);
} catch (error) {
print(error);
}
notifyListeners();
}
Run Code Online (Sandbox Code Playgroud)
这是我在 main.dart 中重定向到适当页面的逻辑:
home: StreamBuilder(
stream: _firebaseAuth.onAuthStateChanged,
builder: (context, snapshot) {
if(snapshot.hasData){
return HomePage();
} else {
return Login();
}
},
)
Run Code Online (Sandbox Code Playgroud)
这是我对 Signout() 的逻辑
Future<void> signOut() async {
await _firebaseAuth.signOut().catchError((error){
print(error.toString());
});
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我不想让用户退出 Google,只想让我的应用程序退出。但我无法弄清楚为什么这不重定向。当我使用带有电子邮件/密码的标准 firebase 登录时,它工作正常。
我认为只能像这样在 _googleSignIn 上执行 singOut 操作:
Future<void> signOut() async {
await _firebaseAuth.signOut().catchError((error){
print(error.toString());
});
await _googleSignIn.signOut();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2363 次 |
| 最近记录: |