我已经在Flutter上实现了Firebase身份验证,无论是Google登录还是Facebook登录。
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn _googleSignIn = GoogleSignIn();
...
Future<String> authenticateWithGoogle() async {
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
if (googleUser!=null) {
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
return _signInWithCredential(credential);
}
return null;
}
Future<String> _signInWithCredential(AuthCredential credential) {
return _auth.signInWithCredential(credential).then((user) => user.getIdToken());
}
它们都在iOS和Android上运行。唯一的问题是,即使在用户已经登录的情况下,也仅在iOS上要求用户登录Google帐户。因此,在同一设备上的其他应用程序上,当用户尝试使用Google登录时,系统会将他们转到进入“选择帐户”页面,而在我的应用程序中,他们被带到“登录”页面。
Facebook登录未显示此行为。