Problème avec displayName vide dans Firebase lors de la connexion à l'aide de signInWithCredential
P粉328911308
P粉328911308 2023-09-04 09:43:01
0
2
513
<p>J'utilise Google Login et l'utilisateur est invité à saisir l'adresse e-mail et le mot de passe de son compte Google : </p> <pre class="brush:php;toolbar:false;">const auth = getAuth(app); const userCredentials = attendre signInWithCredential ( authentification, GoogleAuthProvider.credential (null, jeton) ); console.log(userCredentials.user)</pre> <p>J'ai réussi à obtenir l'objet utilisateur, y compris <code>email</code>, <code>photoURL</code>, <code>uid</code> et d'autres informations, mais <code> displayName</code> est vide. Est-ce un bug ou un résultat attendu ? J'ai essayé de créer un nouveau compte Gmail, y compris le nom et le pseudo, mais <code>displayName</code> Comment puis-je obtenir <code>displayName</code> ? </p>
P粉328911308
P粉328911308

répondre à tous(2)
P粉794851975

J'ai trouvé un moyen de "pirater" l'objet inaccessible depuis signInWithCredential获取displayName的问题。显然,正如之前所说的,displayName始终为null。但是,如果你使用google_sign_in库进行登录并检查GoogleSignInAccount et vous verrez que vous aurez ce nom d'affichage. Vous pouvez ensuite vous connecter à Firebase en utilisant les identifiants de connexion Google que vous avez utilisés précédemment. Voici le code que j'utilise :

try {
      GoogleSignIn _googleSignIn = GoogleSignIn();
      GoogleSignInAccount? googleSignInAccount = await _googleSignIn.signIn();
      if (googleSignInAccount == null) {
        print('error getting google sign in account');
        return;
      }

      GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount!.authentication;
      AuthCredential credential = GoogleAuthProvider.credential(
          idToken: googleSignInAuthentication.idToken, accessToken: googleSignInAuthentication.accessToken);

      var result = (await _auth.signInWithCredential(credential));
      user = result.user;
      displayName = googleSignInAccount.displayName;
    } catch (e) {
      print(e);
    }

Dans user变量中,你将拥有来自firebase身份验证的所有与用户相关的变量,例如uid,而从googleSignInAccount, vous pouvez obtenir le nom d'affichage. J'espère que cela aide quelqu'un !

P粉073857911

Par défaut, UserdisplayName属性为空。它取决于用户在创建或更新时是否设置了displayName。但默认情况下它是null.

Si vous souhaitez mettre à jour quelque part displayName,可以使用以下方法:updateProfile :

import { getAuth, updateProfile } from "firebase/auth";
const auth = getAuth(app);
const user = auth.currentUser;

await updateProfile(user, {
  displayName: "John Doe"
});

console.log(user.displayName);

Si vous êtes sûr d'avoir displayName,但在user.displayName中没有显示出来,那么你需要检查你传递给GoogleAuthProvider.credential()方法的idToken是否为null,确保你也传递了有效的idToken dans votre compte Google.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!