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 提供的答案似乎有效。这是函数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
);
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 标题栏?