我创建了一个具有多个登录选项的应用程序,例如电子邮件和密码或使用谷歌帐户。
每次用户登录时,我都会保存一些相关数据,例如帐户创建数据、昵称等。
我将其存储在我的 Firebase 数据库中的以下路径中:
Users(集合)-> auth.getuid(具有唯一id的文档)-> UserData(集合)->一些字段
因此,当我使用电子邮件和密码登录并进行身份验证时,我可以使用 auth.getid
获得唯一 ID .通过这种方式,我可以确保不同用户不会有 2 个相同的文档。
现在,如果我通过以下方式使用谷歌登录:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RequestSignInCode){
GoogleSignInResult googleSignInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (googleSignInResult.isSuccess()){
GoogleSignInAccount googleSignInAccount = googleSignInResult.getSignInAccount();
FirebaseUserAuth(googleSignInAccount);
FirebaseFirestore db = FirebaseFirestore.getInstance();
Map<String, Object> user = new HashMap<>();
user.put("username", googleSignInAccount.getEmail());
user.put("email",googleSignInAccount.getEmail());
user.put("dateCreated", FieldValue.serverTimestamp());
db.collection( "Users" ).document(auth.getUid()).collection( "UserData" ).add( user );
Intent intent = new Intent( SignInActivity.this, DiscoverActivity.class );
startActivity(intent);
finish();
}
}
}
使用 google 登录时是否有与 auth.getuid 等效的东西,以便我可以为该用户创建一个唯一的文档?
或者更好的是,我还能以某种方式使用 auth.getID 吗?因为如果在我的所有代码中,当我使用电子邮件 + 密码登录时,我可以使用 auth.getuid
进行查询,现在我将无法并且需要基于 some google.id
创建一个单独的查询?
谢谢
最佳答案
任何 Firebase 身份验证用户都有一个 UID,您可以使用它来识别该用户。他们使用哪个提供商登录并不重要(电子邮件/密码、谷歌或任何其他)。当您允许同一用户与不同的提供商签名时,此 UID 甚至可以工作,并且您 link those accounts .
关于java - 谷歌使用 Firebase 登录时的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792775/