我想尝试将我的原生android firebase开发保持在最低限度,以便当我准备移植到IOS / web时,我不会在那里做很多事情。
现在firebase的Javascript不允许从Android进行谷歌登录,这可以从插件中处理。但我所坚持的是如何基于Java Android Google登录来初始化firebase。
所以这就是我想要实现的目标:
Cordova将Java-Android-Native登录称为google --->基于此,我将如何初始化firebase?
此插件可让我以原生方式登录google: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
它有public String getIdToken ()
& public String getServerAuthCode ()
为什么不能使用JS来验证firebase?
更新2:Faraz提供的答案似乎正在发挥作用。以下是函数signInWithCredential
https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithCredential
感谢您的帮助。
答案 0 :(得分:4)
将auth.signInWithCredential
与GoogleAuthProvider
凭据一起使用。
以下是一个例子:
auth.signInWithCredential(firebase.auth.GoogleAuthProvider.credential(googleAccessToken)).then(function(user) {
// Google User is logged in
}).catch(function(error) {
// Error
});
答案 1 :(得分:1)
您可以阅读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服务器,该服务器会检查您的令牌是否已经登录。您可以以相同的方式设置自己的服务器。
答案 2 :(得分: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());
}
}
});
}