Firebase中的displayName為空的問題在使用signInWithCredential進行登入時出現
P粉328911308
2023-09-04 09:43:01
<p>我正在使用Google登錄,提示用戶輸入Google帳號的電子郵件和密碼:</p>
<pre class="brush:php;toolbar:false;">const auth = getAuth(app);
const userCredentials = await signInWithCredential(
auth,
GoogleAuthProvider.credential(null, token)
);
console.log(userCredentials.user)</pre>
<p>我成功取得到使用者對象,其中包含<code>email</code>、<code>photoURL</code>、<code>uid</code>等資訊,但是<code> displayName</code>為空。這是一個錯誤還是預期結果?我嘗試創建了一個新的Gmail帳戶,包括姓名和暱稱,但是<code>displayName</code>仍然為空。我該如何取得<code>displayName</code>? </p>
我找到了一個方法來「黑掉」關於無法從
signInWithCredential
取得displayName
的問題。顯然,如同先前所說的,displayName
總是為null。但是,如果你使用google_sign_in
庫進行登入並檢查GoogleSignInAccount
對象,你將會看到你將擁有該顯示名稱。然後,你可以使用之前使用的Google登入憑證登入Firebase。 以下是我使用的程式碼:在
user
變數中,你將擁有來自firebase
身份驗證的所有與使用者相關的變量,例如uid
,而從googleSignInAccount
中你可以取得顯示名稱。 希望這能幫助某人!預設情況下,
User
的displayName
屬性為空。它取決於使用者在建立或更新時是否設定了displayName
。但預設情況下它是null
。如果你想在某個地方更新
如果你確定你的Google帳號中有displayName
,可以使用以下方法:#updateProfile
##:displayName
,但在
user.displayName中沒有顯示出來,那麼你需要檢查你傳遞給
GoogleAuthProvider.credential( )方法的
idToken是否為
null,確保你也傳遞了有效的
idToken。