Firebase Admin 用户身份验证不发送短信,只直接创建用户

Firebase Admin user authentication not sending sms, only creates users directly

我是 firebase 管理员的新手,我希望 firebase 管理员通过我的 python 后端在创建用户

之前验证用户 phone 号码

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

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

如何让 firebase 管理员在注册前向用户的 phone 号码发送短信?

-----编辑-----

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 身份验证的任何数据都被认为是正确和有效的。这就是为什么在用户帐户上添加 phone 号码不会触发短信验证 - 它被假定属于该用户。

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

您可以在此处阅读更多相关信息 -> Send a verification code to user's phone

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

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