Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firebase createUserWithEmailAndPassword()是否更改了返回值?_Javascript_Firebase_Authentication_Firebase Authentication - Fatal编程技术网

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:)