Firebase 用户电话号码验证
Posted
技术标签:
【中文标题】Firebase 用户电话号码验证【英文标题】:Firebase user phone number verification 【发布时间】:2017-07-01 15:58:55 【问题描述】:我可以看到 Firebase 具有电话号码身份验证,但我只想验证电话号码。我不想使用电话号码登录。我可以做到这一点还是应该使用其他服务进行短信验证?
【问题讨论】:
你可以。只需完成从 onVerificationCompleted(PhoneAuthCredential credential) 获取 PhoneAuthCredential 的过程。我认为这就足够了,但我的代码“linkWithCredential()”只是为了确保这基本上是弗兰克所说的关于让用户登录的内容。 【参考方案1】:验证电话号码是用户登录 Firebase 身份验证的一部分。如果用户未登录 Firebase 身份验证,您将无法使用 Firebase 电话号码身份验证。
也就是说:在很多情况下,您可以让用户登录到 Firebase 时不会出现问题。
【讨论】:
这是否意味着即使用户使用其他方法之一登录并且我想验证他们的电话号码,我也必须使用电话号码身份验证再次登录?感谢您的快速回复! @gasho 我也在想同样的事情。您是否知道是否必须重新登录用户? 是的,他们会的。电话号码身份验证是 Firebase 身份验证中的一个单独提供程序,您需要分别登录每个提供程序。请注意:您可以随心所欲地实现此流程:因此,用户可以看到一个要求电子邮件+密码+电话的单一表单,然后您在后台将它们登录到电子邮件+密码和电话提供商,然后将它们链接在一起。 @FrankvanPuffelen 感谢您的回答,我从未收到您回复的通知,我只是刚刚检查了一下。对于我的应用程序,我只使用电子邮件让用户登录,一旦进入访问应用程序的其他部分,他们必须验证他们的手机,这意味着我在他们收到短信后再次登录(在幕后)。现在我用电话凭证登录了他们,这是否会以某种方式使他们的电子邮件登录无效?如果他们更改了#,我是否必须再次登录(在幕后)?一旦他们退出并通过电子邮件重新登录,我是否必须提取他们的 # 并重新登录? 顺便说一句,一旦他们收到短信,我会将电话号码存储在他们的 uid 节点和钥匙串中。如果他们注销并登录,我会从节点中提取他们的号码,然后在钥匙串中设置。当需要访问应用程序的其他部分时,我会使用钥匙串进行验证。【参考方案2】:你可以用这个
import React from "react";
import StyledFirebaseAuth from 'react-firebaseui/StyledFirebaseAuth';
import firebase from "firebase";
import './firebaseui-styling.global.css';
const config =
// your firebase config
;
firebase.initializeApp(config);
const PhoneVerification = () =>
const uiConfig =
signInFlow: 'popup',
signInOptions: [
provider: firebase.auth.PhoneAuthProvider.PROVIDER_ID,
recaptchaParameters:
type: 'image',
size: 'invisible',
badge: 'bottomleft'
,
defaultCountry: '+91',
whitelistedCountries: ['IN', '+91']
],
// callbacks:
// signInSuccessWithAuthResult: function (authResult)
// var no = firebase.auth.PhoneAuthCredential
// console.log(no)
//
//
return (
<div>
<StyledFirebaseAuth uiConfig=uiConfig firebaseAuth=firebase.auth() />
</div >
)
export default PhoneVerification
【讨论】:
以上是关于Firebase 用户电话号码验证的主要内容,如果未能解决你的问题,请参考以下文章
React 本机 firebase 电话号码身份验证在发送短信之前打开 safari。糟糕的用户体验
Firebase firestore 获取未经身份验证的用户文档
如何在启用电话身份验证的情况下导出 Firebase 用户帐户