Maison > Questions et réponses > le corps du texte
P粉7948519752023-09-05 00:52:04
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粉0738579112023-09-05 00:03:58
Par défaut, User
的displayName
属性为空。它取决于用户在创建或更新时是否设置了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.