1. Проблема
Я пытаюсь реализовать простые кнопки входа в Facebook и Google с помощью Firebase и Flutter, однако версия Google ведет себя очень странно. Когда я печатаю FirebaseAuth.instance.currentUser()
, я получаю либо ошибки, либо предыдущие данные для входа в Facebook.
Когда я вхожу в Facebook, моя учетная запись действительно появляется в Firebase, однако, похоже, что логин Googleничего.
Это я что-то напутал в приведенном ниже коде или какая-то проблема несовместимости с AndroidX с частями этих библиотек? Что-то еще?
Кроме того, мне не очень понятно, нужно ли мне поместить Project public-facing name
где-нибудь внутри моего проекта, чтобы сделать интеграцию с Firebase работающей (мне пришлось сделать что-то похожее на настройку входа в Facebook). кнопка).
2. Логин Facebook
Мне пришлось заменить logInWithReadPermissions
на signInWithCredential
, потому что последние версии изменили свой API. Я также пытался использовать предыдущие версии пакетов, но обнаружил много ошибок (возможно, из-за AndroidX):
final _auth = FirebaseAuth.instance;
Future<FirebaseUser> _loginWithFacebook () async {
final facebookLogin = FacebookLogin();
final result = await facebookLogin.logInWithReadPermissions(['email']);
if (result.status == FacebookLoginStatus.loggedIn){
final FacebookAccessToken accessToken = result.accessToken;
AuthCredential credential = FacebookAuthProvider.getCredential(
accessToken: accessToken.token,
);
AuthResult signInResult = await _auth.signInWithCredential(credential);
FirebaseUser fbUser = signInResult.user;
return fbUser;
}
else{
return null;
}
}
3. Google Login
Опять же, signInWithCredential
представляется более новым API:
Future<FirebaseUser> _loginWithGoogle () async{
final GoogleSignIn _googleSignIn = GoogleSignIn();
GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
final AuthCredential credential = GoogleAuthProvider.getCredential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
AuthResult signInResult = await _auth.signInWithCredential(credential);
final FirebaseUser user = signInResult.user;
print(user);
return user;
}
Редактировать
Я пробовал его на Android 9.0 (пирог)эмулятор, и он все еще не работает.