我正在使用Firebase Auth,并且我有一个包含两个字段的表单,名称和电话号码以及onsubmit方法,并且我想更新当前登录用户的电话号码和名称。但它不会在提交时更新电话号码。仅成功更新用户的显示名称。请检查下面的代码。 onUpdateProfile是表单提交功能。
<template>
<form @submit.prevent="onUpdateProfile">
<input type="text" v-model="profile.name" placeholder="Enter Your Name..." />
<input type="text" v-model="profile.phonenumber" placeholder="Enter Your phone..." />
<button type="submit">submit</button>
</form>
</template>
methods: {
onUpdateProfile() {
firebase.auth().onAuthStateChanged(user => {
if (user) {
//Getting Current User
let user = firebase.auth().currentUser;
user
.updateProfile({
displayName: this.profile.name,
phoneNumber: this.profile.phoneNumber
})
.then(() => {console.log('success})
.catch(error => {console.log(error});
//Updating User other details on submit
} else {
}
});
}
}
data() {
return {
profile: {
name: "",
phonenumber: ""
}
};
}
答案 0 :(得分:0)
更新
根据Firebase文档,看起来只有使用firebase-admin才能更新电话号码。没有它,您只能更新基本信息,例如用户的显示名称和个人资料照片URL。
如果我错了,请随时纠正我。
https://firebase.google.com/docs/auth/admin/manage-users#update_a_user
https://firebase.google.com/docs/auth/web/manage-users#update_a_users_profile
您使用的是不同的名称;
在模板中您有以下内容:
v-model="profile.phonenumber"
和onUpdateProfile()方法中
phoneNumber: this.profile.phoneNumber
答案 1 :(得分:0)
您无法使用updateProfile
更新phoneNumber
。您必须使用updatePhoneNumber
API,因为Firebase Auth始终要求先验证电话号码,然后才能将其保存在用户上。
这类似于signInWithPhoneNumber
。
const phoneNumber = getPhoneNumberFromUserInput();
const appVerifier = new firebase.auth.RecaptchaVerifier(...);
firebase.auth().currentUser.updatePhoneNumber(phoneNumber, appVerifier)
.then((confirmationResult) => {
// SMS sent. Prompt user to type the code from the message, then complete
// verification by calling confirmationResult.confirm(code).
...
return confirmationResult.confirm(smsCode);
}).then((userCredential) => {
// Phone set on the user.
}).catch((error) => {
// Error occurred.
});
答案 2 :(得分:0)
这对我有用:
async function save(phone: string, e) {
e.preventDefault();
const { currentUser:fuser } = firebase.auth();
if(fuser && fuser.phoneNumber !== phone) {
try {
const verifier = new firebase.auth.RecaptchaVerifier('recaptcha-container', {
callback: (response) => console.log('callback', response),
size: 'invisible',
});
const phoneProvider = new firebase.auth.PhoneAuthProvider();
const id = await phoneProvider.verifyPhoneNumber(phone, verifier);
const code = window.prompt('Bitte zugeschickten Code eingeben');
const cred = firebase.auth.PhoneAuthProvider.credential(id, code);
await fuser.updatePhoneNumber(cred);
console.log('phone number changed', id, cred, fuser);
setSuccess(true);
} catch(e) {
console.error(e);
}
}
}