当前位置: 首页 > 知识库问答 >
问题:

Firebase没有向手机号码发送OTP

衡建中
2023-03-14

我面临着不同类型的问题。我正在我的应用程序中使用Firebase手机号码认证。当我试图将OTP发送到我使用的同一个手机号码时,OTP不会发送。然而,如果我从我的手机向其他手机发送OTP,则OTP正在发送。我还发现,如果我从另一个手机发送OTP到我的号码,OTP就来了。因此没有手机号码的问题。调试时,我发现这个代码块不起作用

@Override
    public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
        super.onCodeSent(verificationId, forceResendingToken);

        Log.e(TAG, "onCodeSent: s - " + verificationId + " : t - " + forceResendingToken);
        xVerificationId = verificationId;
    }

对于其他数字,它正在工作,验证和forceResendingToken正在生成。

共有3个答案

郜卓君
2023-03-14

如前所述,电话号码将通过以下两种方式自动验证:

  1. 即时验证或
  2. 自动检索

这就是为什么oncodesnt()不起作用的原因。

现在,为了解决这个问题,您将需要实现onVerficationComplted(),大多数情况下,您已经实现了它,但您不知道里面放了什么。

如果你是在onVerficationComplted()里面,那么你可能没有OTP,但你肯定有phoneAuthCredential,你只需要把这个变量传递给mAuth.signInSusCredential(),这应该会导致你想要的输出。

示例代码

        @Override
        public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) {

            Toast.makeText(getApplicationContext(),"Verifying code Automatically",LENGTH_LONG).show();

            signInWithCredential(phoneAuthCredential);

        }

示例代码:

private void signInWithCredential(PhoneAuthCredential credential) {
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {

                        // Sign in success, update UI with the signed-in user's information
                        // Log.d(TAG, "signInWithCredential:success");


                    } else {
                        // Sign in failed, display a message and update the UI
                        // Log.w(TAG, "signInWithCredential:failure", task.getException());

                        }
                    }
                }
            });
}
阙奇思
2023-03-14

您是否在验证完成后实施?在以下两种情况下,不会发送OTP,如中所述https://firebase.google.com/docs/auth/android/phone-auth:

  • 即时验证:无需发送OTP即可即时验证电话号码

在这种情况下,您将直接获得PhoneAuthCredential。

满子实
2023-03-14

如果您在Firebase下的测试中添加了您的电话号码(登录方法-

 类似资料:
  • 我正在开发一个应用程序,该应用程序具有获取OTP的功能,并且我使用了firebase OTP功能(使用手机号码在Android上与firebase进行身份验证),但不幸的是,有时我会面临这样的问题,比如我没有从firebase获得OTP,同时它也没有给出任何错误。我不知道我犯了什么错。需要帮助来解决这个问题,我也尝试了一些样本,它工作正常,但当我试图在我的项目中集成firebase是不是发送otp

  • 我正在制作一个工作应用程序,目的是为Android Studio中使用Java的用户提供一个门户。我已经设置了Firebase云消息传递、身份验证和一个实时数据库来存储用户。我可以很容易地从云控制台发出推送通知,但我在想,有没有一种方法可以在不使用控制台的情况下,将推送通知发送到所有设备? 我的理由是,我不希望有人在人力资源意外删除一个用户,但我希望他们能够发送推送通知的情况,如关闭。有没有办法做

  • 我在科特林是新来的。试图通过firebase phone auth发送短信,但我得到了

  • 我正在尝试从 AWS SNS 服务向我的印度号码发送短信通知。在互联网上搜索此内容时,许多人在他们的帖子中提到,SMS服务仅适用于美国的手机。 但是在阅读SNS文档时,我发现印度在受支持的地区。 我在SNS中创建了一个主题并为我的手机号码创建了SMS订阅,但我没有得到订阅链接。 我不知道我的理解是否正确。对此有什么想法吗? 我试着通过AWS Cli命令和boto3发送它..我得到了成功密码,但我没

  • 我想从我的流星应用程序编程发送短信/短信;许多人为此推荐twilio,有几个Meteor twilio包(可通过大气和/或谷歌/绑定找到)。我不知道这些软件包中是否有一个比另一个更好,但至少现在,我使用的是Abhiaayer:meteor-twilio软件包。 我担心的是,当您创建Twilio帐户时,他们会给您分配一个“发件人”电话号码(显然,您不能使用自己的电话号码)。也许我误解了这是如何工作的

  • 问题内容: 如果我使用的话,应该这样写国际电话代码。 到目前为止,还算不错,但是如果有的话,我找不到有关如何以“国际”方式写手机号码的信息。 问题答案: 在您所在国家/地区内拨打号码时,仍然需要先拨打国家中继号码。例如,在澳大利亚,您会拨打: 对于手机,这变成 现在,当我想通过国际中继拨号时,您需要删除中继前缀并将其替换为国际拨号前缀。 这就是为什么您经常会发现在拨打国际电话时,即使使用国际前缀在