我可以使用Firebase"电话号码验证"电话号码验证功能?

时间:2017-10-11 18:23:30

标签: android firebase authentication firebase-authentication one-time-password

我实际上是使用Firebase Google身份验证来登录用户,之后,我想将用户的基本详细信息带入数据库,其中还包括用户的手机号码,所以我的问题是可以使用电话号码身份验证只是为了验证用户的手机号码(使用OTP),之后我可以将其存储到数据库中? 谢谢!

5 个答案:

答案 0 :(得分:2)

如果您已经使用Google登录用户。您可以链接/更新该用户的电话号码: https://firebase.google.com/docs/reference/js/firebase.User#updatePhoneNumber https://firebase.google.com/docs/reference/js/firebase.User#linkWithPhoneNumber

这意味着用户将有2个提供商链接(phone / google.com)。用户将来可以登录。虽然您只想将Google作为提供商公开。您可以在登录页面中提供。

您也可以将用户存储在数据库中。

答案 1 :(得分:2)

因为Firebase身份验证非常棒,

可以拥有 多个 身份验证"方法"在一个帐户:

  

enter image description here

在此示例中,相关应用允许用户使用

创建帐户
  • 电话
  • 电子邮件
  • Facebook链接

因此。在应用程序的欢迎屏幕上,它显示"加入SuperApp,使用电话,电子邮件或Facebook链接!"这三种方法有三个按钮。

但实际上,Firebase身份验证的工作方式,每个用户实际上可以拥有多个

  

第三位用户同时拥有电子邮件和电话身份验证。第四个用户都有三个!

因此,让我们说用户使用"电子邮件身份验证"创建一个帐户。

稍后会有一个按钮显示"还会关联您的Facebook帐户!"

和另一个,"还要关联您的电话号码!"

(请注意,在许多情况下,根据您的启动内容,您可能希望用户拥有多种身份验证方法,以获得更高的安全性。或者,您可能只是想让他们更轻松地登录。)

令人难以置信的是,Firebase可以处理所有这些问题。 (或者,您可以花一年时间手工开发它!)

有些观点......

  • 是的,Firebase完全负责发送电子邮件或短信验证码。完全自动化。

  • 请注意,您无法使用"令人惊叹的电子邮件/电话验证服务"用于其他目的"。例如,在应用中,我们正在使用短信代码,您需要验证购买或其他内容。请注意,这与用户登录完全无关,它只是应用程序中使用SMS代码的无关功能。你可以 (不幸的是!)使用Firebase的史诗短信系统来做到这一点。 (您只需使用任何广泛使用的短信代码发送服务。)

  • 一个巨大的混乱点。请注意,此处讨论的电子邮件和/或电话号码由Firebase身份验证系统中的Firebase 存储。上图来自 Firebase身份验证系统。您的数据表没有任何连接。因此,几乎每个应用程序都在数据表中有类似" userData /"。当然,为了您的方便(或其他),您可以在数据表中包含字段,例如" email" " Facebook名称"管他呢。无论如何,这些领域都没有与“实际的,真实的”相关联。 Firebase身份验证系统(如上图所示)。这些只是您在开发中填充的字段 - 它们可以保留您放在那里的任何价值。关于SO的问题有很多很多,人们会混淆一些价值" user_email"恰好在数据库中,"实际的,真实的" Firebase在 Firebase身份验证系统中使用的电子邮件或电话。

  • 请注意,如果您从Facebook或其他社交身份验证开始。有时这些社交媒体有用户的电子邮件/电话/等。但这与实际的Firebase认证电子邮件/电话完全没有关系。

  • 如果用户碰巧需要更改其实际经过身份验证的电子邮件或电话,那么link

  • 的功能就是

Firebase身份验证系统太棒了许多移动项目纯粹为了方便使用Firebase身份验证系统而使用Firebase,即使他们并不特别使用Firebase。

(电子邮件前面的一个细节。您将使用自己的电子邮件服务器发送电子邮件。(即godaddy或sendmail或其他任何东西 - 只要您正常使用的电子邮件服务器。)有一个插槽在Firebase的后端,您只需输入您的电子邮件服务器/密码。或者,在开发/测试期间,Firebase甚至会为您发送电子邮件,但它只是缓慢到达,因为它是一个大量使用的帐户像你这样的数以千计的Firebase应用开发者。)

摘要

  • 令人惊讶的是,您可以使用多种身份验证方法,它全部由Firebase处理

  • 请注意,您在数据中可能碰巧遇到的任何电话/电子邮件等,绝对没有连接到"实际" Firebase身份验证中的电话​​/电子邮件

  • 在Firebase控制台中,查看左侧并转到上面的一个"数据库"看"身份验证" !许多新闻开发者都没有意识到这一点!

答案 2 :(得分:1)

如果您只想使用firebase手机身份验证进行电话号码验证,我可以通过以下方式执行此操作:

首先在登录方法页面中,启用电话号码登录方式并在电话号码上发送验证码使用此

<div class="centered-box">
  <div class="login-form">
    <div class="img-container">
      <img src="https://pmcdeadline2.files.wordpress.com/2016/07/logo-tv-logo.png" alt="logo" class="logo">
    </div>

    <form class="form-container">
      <input type="text" placeholder="Username">
      <input type="password" placeholder="Password">

      <button>Login</button>
    </form>
  </div>
</div>

您将在PhoneAuthProvider.getInstance().verifyPhoneNumber( phoneNumber, // Phone number to verify 60, // Timeout duration TimeUnit.SECONDS, // Unit of timeout this, // Activity (for callback binding) mCallbacks); // OnVerificationStateChangedCallbacks 获得回复并初始化回调使用此

mCallbacks

不要忘记使用最新的firebase依赖项,例如

mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(PhoneAuthCredential credential) { // this method executed if phone number verified you can do your stuff here if you only want to verify phone number. // or you can also use this credentials for authenticate purpose. } @Override public void onVerificationFailed(FirebaseException e) { // This callback is invoked in an invalid request for verification is made, // for instance if the the phone number format is not valid. } @Override public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token) { // The SMS verification code has been sent to the provided phone number, we // now need to ask the user to enter the code and then construct a credential //and then execute your method if number entered is correct. } };

希望这会对你有所帮助。

答案 3 :(得分:1)

pip install 'pyperclip<1.6.2'

答案 4 :(得分:0)

是的,您可以在以下代码的帮助下使用它

  PhoneAuthProvider.getInstance().verifyPhoneNumber(
            mobnum,        // Phone number to verify
            60,                 // Timeout duration
            TimeUnit.SECONDS,   // Unit of timeout
            this,               // Activity (for callback binding)
            new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
                @Override
                public void onVerificationCompleted(PhoneAuthCredential phoneAuthCredential) {
                    signInWithPhoneAuthCredential(phoneAuthCredential);
                }
                @Override
                public void onCodeSent(String s, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
                    super.onCodeSent(s, forceResendingToken);
                    verificationId=s;
                }
                @Override
                public void onVerificationFailed(FirebaseException e) {
                    Toast.makeText(getApplicationContext(),"Verification Failed"+e.getMessage(),Toast.LENGTH_LONG).show();

                }
            });        // OnVerificationStateChangedCallbacksPhoneAuthActivity.java

之后,您必须使用以下方法

  private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) {
    firebaseAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Intent i = new Intent(Otp_Verification_Activity.this,HomeActivity.class);
                        startActivity(i);
                        finish();
                    } else {
                        if (task.getException() instanceof FirebaseAuthInvalidCredentialsException) {
                        }
                    }
                }
            });
}

有关更多信息,您可以访问clickhere

然后您在YouTube clickhere上观看视频