首页 文章

android google登录后如何初始化firebase?

提问于
浏览
15

我想尝试将我的原生android firebase开发保持在最低限度,以便当我准备移植到IOS / web时,我不会在那里做很多事情 .

现在firebase的Javascript不允许从Android登录谷歌,这可以从插件中处理 . 但我坚持的是如何基于Java Android Google登录初始化firebase .

所以这就是我想要实现的目标:

Cordova将Java-Android-Native登录称为google --->基于此,我将如何初始化firebase?

这个插件可以让我本地登录谷歌:https://www.npmjs.com/package/cordova-plugin-googleplus

但我想我需要身份验证令牌?令牌ID?

firebase.auth().signInWithCredential(credential).catch(function(error) {
  } else {
    console.error(error);
  }
 });

这可以给我上面要求的东西吗? https://developers.google.com/identity/sign-in/android/sign-in

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

更新1:只想分享更多信息 . 当用户在Android上通过谷歌登录时,我有以下对象

GoogleSignInAccount

https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInAccount

它有 public String getIdToken ()public String getServerAuthCode () 为什么这些不能用于使用JS验证firebase?

更新2:Faraz提供的答案似乎正在起作用 . 这是函数的参考 signInWithCredential https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential

谢谢您的帮助 .

3 回答

  • 4

    auth.signInWithCredentialGoogleAuthProvider 凭证一起使用 .

    这是一个例子:

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

    Source for more infomation

  • 1

    您可以阅读有关Firebase使用情况的this GitHub example .

    并且Here你可以找到 -

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

    哪个(如果一切都成功)调用this public void onAuthenticated(AuthData authData)

    token 在哪里 getIdToken 我的意思是,在所有情况下都可以使用Google,Facebook,Twitter登录Firebase,您必须将收到的令牌发送到Firebase服务器,该服务器会检查您的令牌是否已经登录 . 您可以以相同的方式设置自己的服务器 .

  • 0

    在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()); } } }); }

相关问题