微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Firebase Admin 用户身份验证不发送短信,仅直接创建用户

我是 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 等服务发送短信。这将涉及创建您自己的自定义代码并将它们与验证代码生成一起存储在数据库中,然后对其进行验证,添加速率限制,因此没有人可以随意尝试所有可能的代码。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?