SignInWithCredential を使用してログインするときに Firebase で空の displayName が表示される問題
P粉328911308
2023-09-04 09:43:01
<p>Google ログインを使用しているのですが、ユーザーは Google アカウントのメールアドレスとパスワードの入力を求められます: </p>
<pre class="brush:php;toolbar:false;">const auth = getAuth(app);
const userCredentials = awaitsignInWithCredential(
認証、
GoogleAuthProvider.credential(null, トークン)
);
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
変数には、
uidなどの
firebase認証と
googleSignInAccount Inからのすべてのユーザー関連変数が含まれます。表示名を取得します。 これが誰かの役に立てば幸いです!
デフォルトでは、
User
のdisplayName
属性は空です。これは、ユーザーが作成時または更新時にdisplayName
を設定したかどうかによって異なります。ただし、デフォルトではnull
です。どこかで
リーリーdisplayName
を更新したい場合は、次のメソッドを使用できます:updateProfile
:Google アカウントに
displayName
があることは確かだが、それがuser.displayName
に表示されない場合は、## に渡したものを確認する必要があります。 #GoogleAuthProvider.credential( )メソッド
nullの
idTokenは、有効な
idTokenも渡していることを確認してください。