Omi*_*hra 7 android firebase firebase-authentication google-signin
我正在使用Firebase开发Android应用,在我的应用中,我正在使用Firebase匿名登录和Google登录.
如果用户未登录,则应用程序启动时,我将使用匿名身份验证来登录用户.
之后,当用户选择使用Google登录时,我将匿名帐户转换为永久帐户.
我在这里的问题是,当用户的帐户从匿名帐户转换为永久帐户(在这种情况下使用Google登录)时,我没有获得用户的显示名称和照片网址.
要从匿名帐户转换为永久帐户,我使用下面的代码.
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
mAuth.getCurrentUser().linkWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "linkWithCredential:onComplete:" + task.isSuccessful());
if (!task.isSuccessful()) {
Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",Toast.LENGTH_SHORT).show();
//If Google Account already linked up with other UID
Tasks.await(mAuth.signInWithCredential(credential)).getUser();
}
}
});
Run Code Online (Sandbox Code Playgroud)
登录过程完成后,将调用AuthStateListener onAuthStateChanged,然后在onAuthStateChanged中,我将提取用户的显示名称,用户的照片URL和用户的电子邮件.下面是onAuthStateChanged代码.
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null && !(user.isAnonymous())) {
Log.d("userDetails", "UID: " + user.getUid());
Log.d("userDetails", "Name: " + user.getDisplayName());
Log.d("userDetails", "PhotoUrl: " + user.getPhotoUrl().toString());
Log.d("userDetails", "Email: " + user.getEmail());
}
Run Code Online (Sandbox Code Playgroud)
在日志中,我为user.getDisplayName()和user.getPhotoUrl()获取null
我不明白我做错了什么.请帮忙.
感谢和问候,
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.getProviderData();
Run Code Online (Sandbox Code Playgroud)
循环访问提供者并获取所需的提供者
userData.getProviderId().equals(GoogleAuthProvider.PROVIDER_ID)
Uri photoUrl = userData.getPhotoUrl();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
824 次 |
| 最近记录: |