Isu dengan displayName kosong dalam Firebase apabila log masuk menggunakan signInWithCredential
P粉328911308
2023-09-04 09:43:01
<p>Saya menggunakan Log Masuk Google dan pengguna digesa untuk memasukkan e-mel dan kata laluan akaun Google mereka: </p>
<pre class="brush:php;toolbar:false;">const auth = getAuth(app);
const userCredentials = tunggu signInWithCredential(
kebenaran,
GoogleAuthProvider.credential(null, token)
);
console.log(userCredentials.user)</pre>
<p>Saya berjaya memperoleh objek pengguna, termasuk <kod>e-mel</kod>, <kod>photoURL</kod>, <kod>uid</kod> displayName</code> Adakah ini pepijat atau hasil yang dijangkakan? Saya cuba membuat akaun Gmail baharu, termasuk nama dan nama panggilan, tetapi <kod>displayName</code> Bagaimanakah saya boleh mendapatkan <code>displayName</code>? </p>
Saya menemui cara untuk "menggodam" objek yang tidak boleh diakses daripada
signInWithCredential获取displayName的问题。显然,正如之前所说的,displayName始终为null。但是,如果你使用google_sign_in库进行登录并检查GoogleSignInAccountdan 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,而从googleSignInAccountanda boleh mendapatkan nama paparan. Harap ini membantu seseorang!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,确保你也传递了有效的idTokendalam akaun Google anda.