Rumah > Soal Jawab > teks badan
P粉7948519752023-09-05 00:52:04
Saya menemui cara untuk "menggodam" objek yang tidak boleh diakses daripada signInWithCredential
获取displayName
的问题。显然,正如之前所说的,displayName
始终为null。但是,如果你使用google_sign_in
库进行登录并检查GoogleSignInAccount
dan anda akan melihat bahawa anda akan mempunyai nama paparan itu. Anda kemudian boleh log masuk ke Firebase menggunakan bukti kelayakan log masuk Google yang anda gunakan sebelum ini.
Inilah kod yang saya gunakan:
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); }
Dalam user
变量中,你将拥有来自firebase
身份验证的所有与用户相关的变量,例如uid
,而从googleSignInAccount
anda boleh mendapatkan nama paparan.
Harap ini membantu seseorang!
P粉0738579112023-09-05 00:03:58
Secara lalai, User
的displayName
属性为空。它取决于用户在创建或更新时是否设置了displayName
。但默认情况下它是null
.
Jika anda ingin mengemas kini di suatu tempat 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);
Jika anda pasti anda mempunyai displayName
,但在user.displayName
中没有显示出来,那么你需要检查你传递给GoogleAuthProvider.credential()
方法的idToken
是否为null
,确保你也传递了有效的idToken
dalam akaun Google anda.