我一直在我的Node JS代码中使用Firebase Admin SDK来从服务器端验证用户 .
Admin SDK提供了一个方法 admin.auth().createUser()
来创建新用户 .
admin.auth().createUser({
email,
password,
displayName: name
})
.then(function(user) {
console.log("Successfully created new user:", user.uid)
return res.send(user)
})
.catch(function(err) {
console.log("Error creating new user:", err)
return res.send(err)
})
但现在如何让用户登录,就像Firebase客户端SDK中有一个方法 auth.signInWithEmailAndPassword(email, pass)
.
firebase管理SDK上有一个方法可以通过电子邮件 admin.auth().getUserByEmail(email)
获取用户信息 . 此方法返回包括密码在内的所有用户信息,但密码已经过哈希处理 . 那么现在是否有任何解决方法可以从Server中正确验证用户身份 .
1 回答
无法使用Admin SDK登录用户 . Admin SDK以管理权限运行,无需登录 .
您需要使用其中一个Firebase客户端SDK(例如,针对Android,iOS或网络用户)直接从客户端代码向Firebase用户签名 .
如果您希望服务器端代码知道登录的用户,则将令牌从客户端发送到服务器,然后在那里进行解码和验证 . 请参阅document on verifying an ID token和sample of server-side authentication with Cloud Functions .