问题描述
我是 firebase 管理员的新手,我希望 firebase 管理员通过我的 python 后端在创建用户之前验证用户电话号码
我正在使用以下文档链接中的说明 https://firebase.google.com/docs/auth/admin/manage-users#update_a_user
现在,我能够使用用户电话号码使用 firebases 的身份验证流程成功创建用户,唯一的问题是没有向用户输入的电话号码发送短信
如何让 Firebase 管理员在注册前向用户的电话号码发送短信?
-----编辑------
from rest_framework.decorators import api_view,renderer_classes
from rest_framework.renderers import JSONRenderer,TemplateHTMLRenderer
@api_view(('POST',))
@renderer_classes((TemplateHTMLRenderer,JSONRenderer))
def SendPhoneCodeView(request):
import firebase_admin
from firebase_admin import credentials
from firebase_admin import auth
cred = credentials.Certificate('PhoneNumberVerify/firebase-admin.json')
firebase_admin.initialize_app(cred)
phone = request.data.get('phone')
print('phone is')
print(phone)
user = auth.create_user(phone_number=phone)
print('User Created Successfully')
print(user.uid)
解决方法
Admin SDK 被视为“事实来源”,您使用它们写入 Firebase 身份验证的任何数据都被视为正确有效。这就是为什么在用户帐户上添加电话号码不会触发 SMS 验证的原因 - 假定它属于该用户。
与电子邮件身份验证操作链接不同,您无法使用 Admin SDK 为 Firebase 电话身份验证生成 OTP 或触发 SMS。当用户尝试登录时,您将不得不依靠 Firebase 客户端 SDK 来发送 SMS。如果他们是目标用户并拥有手机,他们将能够登录。
您可以在此处阅读更多相关信息 -> Send a verification code to user's phone
如果您真的想在创建帐户之前验证用户的电话号码,则必须手动创建和管理身份验证流程,并使用 Twilio 等服务发送短信。这将涉及创建您自己的自定义代码并将它们与验证代码生成一起存储在数据库中,然后对其进行验证,添加速率限制,因此没有人可以随意尝试所有可能的代码。
我没有看到任何严重的安全威胁(除非其他人拥有他们的手机或号码被转移给其他人)或在创建帐户之前未验证号码的情况,用户将需要访问该手机以随时登录。