Как инициализировать firebase после входа в android google?
Я хотел попытаться сохранить свою собственную базовую базу для разработчиков Android до минимума, так что, когда я буду готов к отправке в IOS/web, я не буду делать много там.
В настоящий момент Jabber Javascript не позволяет войти в Google с Android, это можно позаботиться о плагине. Но я застрял в том, как инициализировать firebase на основе входа в систему Java Android Google.
Так вот что я пытаюсь достичь:
Кордова вызывает Java-Android-Native login в google --- > на основе этого, как бы инициализировать firebase?
Этот плагин позволяет мне войти в Google изначально: https://www.npmjs.com/package/cordova-plugin-googleplus
Но я думаю, мне нужен токен авторизации? идентификатор токена?
firebase.auth().signInWithCredential(credential).catch(function(error) {
} else {
console.error(error);
}
});
Может ли это дать мне вышеупомянутый требуемый toke? https://developers.google.com/identity/sign-in/android/sign-in
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Обновление 1: просто хочу поделиться дополнительной информацией. При входе пользователя в систему через google на android у меня есть объект ниже
GoogleSignInAccount
https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount
Он имеет public String getIdToken ()
и public String getServerAuthCode ()
, почему они не могут использоваться для аутентификации firebase с использованием JS?
Обновление 2: Ответ, предоставленный Фаразом, кажется, работает. Вот ссылка для функции signInWithCredential
https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential
Благодарим вас за помощь.
Ответы
Ответ 1
Используйте auth.signInWithCredential
с учетными данными GoogleAuthProvider
.
Вот пример:
auth.signInWithCredential(firebase.auth.GoogleAuthProvider.credential(googleAccessToken)).then(function(user) {
// Google User is logged in
}).catch(function(error) {
// Error
});
Источник для дополнительной информации
Ответ 2
Вы можете прочитать этот пример GitHub об использовании Firebase.
И Здесь вы можете найти -
mFirebaseRef.authWithOAuthToken("google", token, new AuthResultHandler("google"));
Какой (если все это успех) вызывает this
public void onAuthenticated(AuthData authData)
Где token
- ваш getIdToken
Я имею в виду, что возможно войти в Firebase с помощью Google, Facebook, Twitter во всех случаях, когда вам нужно отправить токен, который вы получаете на сервер Firebase, который проверяет ваш токен, вы уже вошли в систему или нет. Вы можете настроить свой собственный сервер таким же образом.
Ответ 3
После входа в google вы должны использовать auth.signInWithCredential с учетными данными GoogleAuthProvider:
Вот код:
private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
Log.d(TAG, "firebaseAuthWithGoogle:" + account.getId());
final String name = account.getDisplayName();
final String email = account.getEmail();
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
getAuth().signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "onComplete: sign in with credentials " + task.isSuccessful());
if (task.i
введите здесь код sSuccessful()) {
Log.e(TAG, "success: sign in with credentials ");
}
if (!task.isSuccessful()) {
Log.e(TAG, "onComplete: sign in with credentials " + task.getException());
}
}
});
}