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

Posted

技术标签:

【中文标题】android google登录后如何初始化firebase?【英文标题】:How to initialize firebase after android google login? 【发布时间】:2017-05-02 18:06:06 【问题描述】:

我想尝试将我的原生 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 上通过 google 登录时,我有以下对象

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 提供的答案似乎有效。这是函数signInWithCredentialhttps://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential的参考

感谢您的帮助。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

您可以阅读this GitHub example 了解 Firebase 的使用情况。

还有Here你可以找到-

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

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

token 是你的getIdToken 我的意思是在任何情况下都可以使用 Google、Facebook、Twitter 登录 Firebase,您必须将收到的令牌发送到 Firebase 服务器,检查您的令牌是否已经登录。你可以用同样的方法设置你自己的服务器。

【讨论】:

【参考方案3】:

谷歌登录后,您必须使用 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()); );

【讨论】:

OP 专门要求提供 Javascript 解决方案,而不是 Java 解决方案。

以上是关于android google登录后如何初始化firebase?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 上集成 Google 登录时如何在 ID 令牌过期后刷新?

用户从 Android 中的 Gmail 登录后如何获取访问令牌?

如何在 Google Play 游戏初始化时隐藏 Android 标题栏?

如果在 Firebase Android 初始注册期间帐户已与 google 关联,则使用 Facebook 登录

google play国内如何登录

将新的 Google 登录添加到 Android 应用程序后的 Proguard 混淆问题