Firebase 身份验证随机令牌
Firebase Authentication Random Token
我想做一个应用程序,您只能使用我提供给人们的特定随机唯一令牌进行注册。所以我给了他们一个令牌,例如:8743-2342-6587 他们可以进入应用程序的注册页面,输入这个令牌,然后像基本身份验证一样输入电子邮件和密码。
最好的方法是什么?
也许我应该在 Firestore 中做一个免费的代币集合。在注册时,我检查令牌是否存在于该集合中,如果是,则将其设置为“不免费”,这可能是一个布尔值。然后用户注册...或者有更好的方法来做这样的事情吗?
一种方法是将所有这些令牌存储在 Firestore 集合中,当用户输入代码时,在云功能中验证它,然后使用 Admin SDK 创建一个帐户。然后您可以使用客户端 SDK 登录用户。流程如下:
- 用户输入凭据以及令牌(如果有)进行注册
- 这些凭据被发送到 Cloud Function,后者随后使用提供的凭据在 Firebase 身份验证中创建用户
- 如果用户还提供了任何令牌,您可以检查 Firestore 中是否存在该令牌,然后在数据库或 custom claims.
中设置所需的布尔值
例如:
exports.registerUser = functions.https.onCall((data, context) => {
const { email, password, token } = data;
const { user } = await admin.auth().createUser({email, password})
// const token = {check if token exists in Firestore}
if (token) {
// set custom claims
}
});
您也可以先创建一个帐户,然后在没有云功能的情况下直接检查令牌是否存在,但这只有在令牌与电子邮件相关联时才有效,因此只有该用户才能检查它是否存在(除非有人允许检查)。
如果用户必须首先提供令牌来创建帐户,那么我建议使用云功能。如果需要,您也可以 disable sign ups from Firebase Client SDKs(需要 Cloud Identity API)。
我想做一个应用程序,您只能使用我提供给人们的特定随机唯一令牌进行注册。所以我给了他们一个令牌,例如:8743-2342-6587 他们可以进入应用程序的注册页面,输入这个令牌,然后像基本身份验证一样输入电子邮件和密码。
最好的方法是什么? 也许我应该在 Firestore 中做一个免费的代币集合。在注册时,我检查令牌是否存在于该集合中,如果是,则将其设置为“不免费”,这可能是一个布尔值。然后用户注册...或者有更好的方法来做这样的事情吗?
一种方法是将所有这些令牌存储在 Firestore 集合中,当用户输入代码时,在云功能中验证它,然后使用 Admin SDK 创建一个帐户。然后您可以使用客户端 SDK 登录用户。流程如下:
- 用户输入凭据以及令牌(如果有)进行注册
- 这些凭据被发送到 Cloud Function,后者随后使用提供的凭据在 Firebase 身份验证中创建用户
- 如果用户还提供了任何令牌,您可以检查 Firestore 中是否存在该令牌,然后在数据库或 custom claims. 中设置所需的布尔值
例如:
exports.registerUser = functions.https.onCall((data, context) => {
const { email, password, token } = data;
const { user } = await admin.auth().createUser({email, password})
// const token = {check if token exists in Firestore}
if (token) {
// set custom claims
}
});
您也可以先创建一个帐户,然后在没有云功能的情况下直接检查令牌是否存在,但这只有在令牌与电子邮件相关联时才有效,因此只有该用户才能检查它是否存在(除非有人允许检查)。
如果用户必须首先提供令牌来创建帐户,那么我建议使用云功能。如果需要,您也可以 disable sign ups from Firebase Client SDKs(需要 Cloud Identity API)。