Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
为什么不';身份验证和登录功能是否属于Firebase中的同一类?_Firebase - Fatal编程技术网

为什么不';身份验证和登录功能是否属于Firebase中的同一类?

为什么不';身份验证和登录功能是否属于Firebase中的同一类?,firebase,Firebase,在Firebase中,身份验证发生在新Firebase引用上。但是登录发生在新的FirebaseAuthClient引用上 对用户进行身份验证: var dataRef = new Firebase('some_firebase_url'); dataRef.auth(auth_token, callback_function); 在中为用户签名: var authClient = new FirebaseAuthClient(dataRef, callback_function); auth

在Firebase中,身份验证发生在
新Firebase
引用上。但是登录发生在
新的FirebaseAuthClient
引用上

对用户进行身份验证:

var dataRef = new Firebase('some_firebase_url');
dataRef.auth(auth_token, callback_function);
在中为用户签名:

var authClient = new FirebaseAuthClient(dataRef, callback_function);
authClient.login('password', some_email, some_password, function(error, token, user) {...});
为什么会这样?让所有身份验证/登录/注册函数都属于同一个类不是更有意义吗?特别是因为名为
FirebaseAuthClient
(注意中间的Auth)的类甚至没有为其指定身份验证方法


这让我有点困惑,我希望一些见解能帮助我更好地理解。

经过进一步的阅读和思考,我意识到,尽管它仍在文档中,
dataRef.auth
不再是必需的。创建一个
新的FirebaseAuthClient
基本上取代了它

在最近的更改之前,
newfirebaseauthclient
没有使用回调函数。要进行身份验证,必须调用
dataRef.auth

现在,当您实例化一个
新FirebaseAuthClient
时,会在此时尝试进行身份验证。以前可用于
dataRef.auth
回调的信息现在可用于提供给
new FirebaseAuthClient
的新回调

然而,情况略有不同。
dataRef.auth
版本如下:

dataRef.auth(authtoken, function(success) { ... });
var authClient = new FirebaseAuthClient(dataRef, function(error, user) { ... });
FirebaseAuthClient
版本如下:

dataRef.auth(authtoken, function(success) { ... });
var authClient = new FirebaseAuthClient(dataRef, function(error, user) { ... });
因此,在新的操作方法中,您不仅得到一个
success
布尔值(它被
error
对象替换),如果身份验证成功,您还可以得到一个
user
对象

在此更改之前,如果用户已成功通过身份验证,并且您希望获取他们的信息,则必须将其从localStorage或其他地方取出。现在它只是在回调中为您提供的,这是一个很好的改变

此外,以前传递给
authClient.login
函数的
token
参数现在是用户数据的一部分,如
user.firebaseAuthToken

与此更新同时进行的是对
authClient.login
工作方式的更改。它不再接受回调,而是触发传递给
newfirebaseauthclient
的回调

实际上,该回调似乎是您需要为任何更改身份验证状态的
FirebaseAuthClient
函数设置的唯一回调。特定的
FirebaseAuthClient
函数(如登录和注销)只会更改身份验证状态,并依赖于原始回调

此外,您似乎不再需要跟踪用户的authToken来对其进行身份验证。过去的情况是,
authClient.login
将使用
token
param调用其回调,然后存储该令牌,并将其用于
dataRef.auth(token,some_callback)
,但这不再是必需的,因为
dataRef.auth
本身不再是必需的

总之,为了回答最初的问题,现在所有的身份验证方法实际上都是同一个类——FirebaseAuthClient的一部分
dataRef.auth
不再是必需的,尽管它仍然在文档中,这让人困惑

dataRef.auth
替换为
new FirebaseAuthClient
,并将
dataRef.auth
替换为
authClient.logout
,您应该被设置


如果Firebase员工对这些索赔的有效性有任何反馈,我将不胜感激。

经过进一步的阅读和思考,我意识到,尽管它仍在文档中,
dataRef.auth
不再是必要的。创建一个
新的FirebaseAuthClient
基本上取代了它

在最近的更改之前,
newfirebaseauthclient
没有使用回调函数。要进行身份验证,必须调用
dataRef.auth

现在,当您实例化一个
新FirebaseAuthClient
时,会在此时尝试进行身份验证。以前可用于
dataRef.auth
回调的信息现在可用于提供给
new FirebaseAuthClient
的新回调

然而,情况略有不同。
dataRef.auth
版本如下:

dataRef.auth(authtoken, function(success) { ... });
var authClient = new FirebaseAuthClient(dataRef, function(error, user) { ... });
FirebaseAuthClient
版本如下:

dataRef.auth(authtoken, function(success) { ... });
var authClient = new FirebaseAuthClient(dataRef, function(error, user) { ... });
因此,在新的操作方法中,您不仅得到一个
success
布尔值(它被
error
对象替换),如果身份验证成功,您还可以得到一个
user
对象

在此更改之前,如果用户已成功通过身份验证,并且您希望获取他们的信息,则必须将其从localStorage或其他地方取出。现在它只是在回调中为您提供的,这是一个很好的改变

此外,以前传递给
authClient.login
函数的
token
参数现在是用户数据的一部分,如
user.firebaseAuthToken

与此更新同时进行的是对
authClient.login
工作方式的更改。它不再接受回调,而是触发传递给
newfirebaseauthclient
的回调

实际上,该回调似乎是您需要为任何更改身份验证状态的
FirebaseAuthClient
函数设置的唯一回调。特定的
FirebaseAuthClient
函数(如登录和注销)只会更改身份验证状态,并依赖于原始回调

此外,您似乎不再需要跟踪用户的authToken来对其进行身份验证。过去的情况是,
authClient.login
会调用