使用Google登录,Firebase Auth中的用户个人资料信息为null

时间:2017-05-11 18:56:59

标签: android firebase firebase-authentication google-signin googlesigninaccount

如何从FirebaseUser获取Google帐户的名称和个人资料照片?

我正在关注Firebase的Android documentation,以便整合Google登录和Firebase身份验证。当我通过Google登录进行身份验证时,我可以从GoogleSignInAccount#getPhotUrl()GoogleSignInAccount#getDisplayName()获取用户个人资料信息。

我可以使用FirebaseAuth.getInstance().signInWithCredential(account)(其中account是同一个经过身份验证的GoogleSignInAccount对象登录Firebase。但我从Firebase端获取用户个人资料信息的空值。

Google登录结果回调:

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
    GoogleSignInAccount account = result.getSignInAccount();
    account.getEmail(); // Valid email
    account.getDisplayName(); // Valid name
    account.getPhotoUrl(); // Valid Uri
    firebaseAuthWithGoogle(account);
}

Google登录+ Firebase身份验证:

private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
    AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        user.getEmail(); // Valid email
                        user.getDisplayName(); // null
                        user.getPhotoUrl(); // null
                    }
                }
            });
}

1 个答案:

答案 0 :(得分:0)

我可以使用新的Firebase项目和新的Gmail帐户解决我的问题。

相关问题