Javascript firebase createUserWithEmailAndPassword()是否更改了返回值?
我已经使用此代码一年了:Javascript firebase createUserWithEmailAndPassword()是否更改了返回值?,javascript,firebase,authentication,firebase-authentication,Javascript,Firebase,Authentication,Firebase Authentication,我已经使用此代码一年了: firebase.auth().createUserWithEmailAndPassword(textUser, textPassword) .then(function(user){ console.log('uid',user.uid) //Here if you want you can sign in the user }).catch(function(error) { //Handle error }); 然而,在过去的两天里,我抱怨新用
firebase.auth().createUserWithEmailAndPassword(textUser, textPassword)
.then(function(user){
console.log('uid',user.uid)
//Here if you want you can sign in the user
}).catch(function(error) {
//Handle error
});
然而,在过去的两天里,我抱怨新用户在创建新登录时遇到问题。我检查了代码中的“user”变量,结果如下:
{
additionalUserInfo: {
providerId: "password",
isNewUser: true
},
credential: null,
operationalType:"signIn"
user: {
(bunch of fields...)
uid: "xxxxx123456789",
(bunch of fileds...)
}
}
这意味着我现在必须使用user.user.uid而不是user.uid来引用uid。我做了这个修改,代码也可以运行,但是我对这个函数还有一些其他的用途,我想知道这是一个实际的修改还是我看到了一些不寻常的东西。我已经很久没有修改过这个代码了,所以无论如何我都很惊讶。感谢您的见解。是的,它改变了许多方法,也在我身边崩溃了。但是我必须重构它们。它返回一种类型的
UserCredential
,其中包含user
和其他对象
UserCredential: {
additionalUserInfo: { isNewUser: boolean, profile: Object, providerId: string, username: string },
credential: {accessToken: string, idToken: string, providerId: string, signInMethod: string},
operationType: string,
user: Object
}
这是我的重构示例代码,它也会崩溃signInWithPopup()
方法
firebase
.auth()
.signInWithPopup(provider)
.then(authResult => {
console.log({ authResult });
if (authResult.user) {
this.doLogin(authResult.user);
}
});
不幸的是,重构代码只能解决问题。另外,请在此处查看有关createUserWithEmailAndPassword()
firebaser的链接
如果我检查JavaScript SDK,至少在过去几周内,似乎没有任何与此相关的更改(我没有进一步向后滚动)
我也非常确定,至少在几年前,它已经返回了一个承诺
我不确定该类型过去是否具有uid
属性,因此我现在正在与一些团队成员进行检查
我知道并能找到的最后一个相关变化是SDK的版本(2018年5月发布):
更新了带Email和Password的SignInWithPassword
、带CustomToken的SignInWithCode
、带Email和Password的SignInNommy和createUserWithEmailAndPassword
的返回类型签名,以返回使用用户凭据而不是用户解析的承诺
因此,如果您最近从5.0之前的版本升级到5.0或更高版本,您确实需要更改代码以从response.user
而不是response
获取用户数据。您是否更新了firebase版本?是的,它包含Frank。我在现场使用。它在将5.7升级到更高版本后崩溃@fmacdee.SDK 5.7非常古老。如果您使用的是更旧的版本,那么确实可能会直接返回一个用户
。是的,它是在@Frank.*Edit之前直接返回用户
。我提到了我的第一条评论。如果你从5.0之前的版本升级到5.0或更高版本,某些方法的返回类型确实发生了变化。我在回答中加入了相关的更改和链接。我不确定OP是不是这样的,谢谢!我增加了你的答案,但给了弗兰克一个复选标记,因为他的答案解释了什么时候可以帮助别人。我很感激。他比我领先一步@Frank:)