我遵循了有关创建自定义令牌Create Custom Tokens的firebase教程
并希望使用自定义令牌来验证用户登录(如文档所示)。以下是生成自定义令牌的代码,但是如何使用它在登录点验证用户名。如何将以下代码与Auth.auth().signIn(withCustomToken: customToken ?? "")
合并。有关自定义身份验证Custom Authentication的文档似乎建议将用户名托管在服务器上。如果firebase充当服务器,那将如何工作而不暴露用户电子邮件而损害数据库安全性。
var admin = require('firebase-admin');
var serviceAccount = require('./serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
// databaseURL: "https://Login-Screen.firebaseio.com"
});
const uid = 'some-uid';
const displayName = "Generic Name";
// const additionalClaims = {
// premiumAccount: true
// };
admin.auth().createCustomToken(uid)
.then((customToken) => {
console.log(customToken);
})
.catch((error) => {
console.log("Error creating custom token: ", error)
});
答案 0 :(得分:3)
据我了解,您首先需要首先在自己的服务器终结点上对用户凭据进行身份验证,只有成功后,您才应返回自定义令牌以通过Firebase进行身份验证。来自文档本身:
要实现此目的,您必须创建一个服务器端点,该端点接受登录凭据(例如用户名和密码),并且如果凭据有效,则返回自定义JWT。然后,客户端设备可以使用从服务器返回的自定义JWT对Firebase(iOS,Android,Web)进行身份验证。
从本质上讲,这意味着Firebase不在乎使用signInWithCustomToken()
函数的用户名或密码,而只是自定义令牌有效,因此您必须确保生成的UUID对于每个用户而言都是唯一的用户。