首页 > 解决方案 > Firebase Admin 用户身份验证不发送短信,只直接创建用户

问题描述

我是 firebase 管理员的新手,我希望 firebase 管理员通过我的 python 后端在创建用户之前验证用户的电话号码

我正在使用以下文档链接中的说明 https://firebase.google.com/docs/auth/admin/manage-users#update_a_user

现在,我能够使用用户电话号码使用 Firebase 的身份验证流程成功创建用户,唯一的问题是没有短信发送到用户输入的电话号码

如何让 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)

标签: pythonfirebasefirebase-admin

解决方案


Admin SDK 被认为是“事实来源”,您使用它们写入 Firebase 身份验证的任何数据都被认为是正确和有效的。这就是为什么在用户帐户上添加电话号码不会触发 SMS 验证的原因 - 它假定属于该用户。

与电子邮件身份验证操作链接不同,您无法使用 Admin SDK 为 Firebase 电话身份验证生成 OTP 或触发 SMS。当用户尝试登录时,您必须依靠 Firebase 客户端 SDK 发送 SMS。如果他们是预期用户并且拥有手机,他们将能够登录。

您可以在此处阅读更多信息 ->向用户的手机发送验证码

如果您真的想在创建帐户之前验证用户的电话号码,则必须手动创建和管理身份验证流程并使用Twilio等服务发送短信。它将涉及创建您自己的自定义代码并将它们与验证码生成一起存储在数据库中,然后对其进行验证,添加速率限制,因此没有人可以随机尝试所有可能的代码。

我没有看到任何严重的安全威胁(除非其他人有他们的电话或号码被转移给其他人)或在创建帐户之前未验证号码的情况,用户需要随时访问该电话才能登录。


推荐阅读