如何使用 Firebase UI 访问 Firebase 中电子邮件帐户的 isNewUser?



目前,此代码会生成一条 Firebase 错误消息,指出"无法获取未定义引用或空引用的属性'isNewUser'"。如何解决此问题,即如何确定用户在登录时是否为新用户?

var uiConfig = {
signInSuccessUrl: false,
signInOptions: [
firebase.auth.EmailAuthProvider.PROVIDER_ID
],
tosUrl: '',
'credentialHelper': firebaseui.auth.CredentialHelper.NONE,
privacyPolicyUrl: function() {
window.location.assign('');
},
'callbacks': { 'signInSuccess': function(user, credential, redirectUrl) {
if (user) {
var displayName = user.displayName;
var email = user.email;
var emailVerified = user.emailVerified;
var photoURL = user.photoURL;
var uid = user.uid;
var phoneNumber = user.phoneNumber;
var providerData = user.providerData;
user.getIdToken().then(function(accessToken) {
$("#message").text(uid);
});
if(firebase.auth.AdditionalUserInfo.isNewUser) {
db.collection("users").doc(uid).set({
firstName: displayName
});
}
} else {
$("#message").text('signed out');
}
return false; 
}
}
}

必须使用 v2.7.0 中引入的signInSuccessWithAuthResult回调

var uiConfig = {
callbacks: {
signInSuccessWithAuthResult: function(authResult, redirectUrl) {
var user = authResult.user;
var credential = authResult.credential;
// Determine if user is new or existing.
var isNewUser = authResult.additionalUserInfo.isNewUser;
var providerId = authResult.additionalUserInfo.providerId;
var operationType = authResult.operationType;
return false;
},
...
},
...
};

最新更新