2016-12-16 2 views
15

Я хотел бы попытаться сохранить свою собственную базу для развития андроид-firebase до минимума, чтобы, когда я буду готов к отправке в IOS/web, я не буду много делать.Как инициализировать firebase после входа в android google?

В настоящее время Javascript для firebase не позволяет войти в Google с Android, это можно позаботиться о плагине. Но я застрял в том, как инициализировать firebase на основе входа в систему Java Android Google.

Так это то, что я пытаюсь достичь:

Кордова называет Java-Android-Native вход в 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: Ответ, предоставленный Фаразом, кажется, работает. Вот ссылка для функции signInWithCredentialhttps://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential

Благодарим за помощь.

ответ

4

Использовать auth.signInWithCredential с учетными данными GoogleAuthProvider.

Вот пример:

auth.signInWithCredential(firebase.auth.GoogleAuthProvider.credential(googleAccessToken)).then(function(user) { 
    // Google User is logged in 
}).catch(function(error) { 
    // Error 
}); 

Source for more infomation

1

Вы можете прочитать this GitHub example о применении Firebase.

И Here вы можете найти -

mFirebaseRef.authWithOAuthToken("google", token, new AuthResultHandler("google")); 

Which (если все это успех) вызывает this public void onAuthenticated(AuthData authData)

Где token это ваш getIdToken я имею в виду это possble войти в Firebase с помощью Google, Facebook, Twitter во всех случаях вам нужно отправить токен, который вы получаете на сервер Firebase, который проверяет ваш токен, вы уже вошли в систему или нет. Вы можете настроить свой собственный сервер таким же образом.

0

После входа в систему Google вы должны использовать авторизацию.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()); } } }); }

+0

OP специально попросили для решения Javascript, а не Java один. – Faraz

Смежные вопросы