【问题标题】:Not Receiving OTP from FireBase from second Time从第二次开始没有收到来自 FireBase 的 OTP
【发布时间】:2019-07-27 12:53:23
【问题描述】:

我正在尝试使用 Android 应用从 Firebase 接收 OTP 号码。每次手机重启后我都会收到 OTP,之后我没有收到任何 OTP。非常感谢任何帮助。我的项目包含以下四个活动。

选项已尝试解决此问题

  1. 已清除手机上的数据。其他用户也有同样的问题。

【问题讨论】:

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


    【解决方案1】:

    你应该先删除

        FirebaseAuth.getInstance().signOut();
        FirebaseAuth.getInstance().signOut();
        FirebaseAuth.getInstance().signOut();
        FirebaseAuth.getInstance().signOut();
        FirebaseAuth.getInstance().signOut();
    

    不应连续调用 5 次。只需在 onStop 方法中执行一次:

    override fun onStop() {
        super.onStop()
        FirebaseAuth.getInstance().signOut()
    }
    

    我认为你应该设置

    FirebaseApp.initializeApp(this);
    

    一次,并确保最好将其放在您的自定义应用程序类中:

    class CustomApplication : Application() {
    override fun onCreate() {
        super.onCreate()
    
        /**
         * Firebase Initialization code
         * **/
    
        FirebaseApp.initializeApp(this)
    }}
    

    然后,在您的 Manifest.xml 文件中:

    <application
            android:name=".CustomApplication"
            android:allowBackup="true"
            android:fullBackupContent="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:largeHeap="true"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
    

    .... ....

    </application>
    

    官方 Firebase github 仓库

    此外,请务必查看 Firebase/quickstart-android - PhoneAuthActivity 的示例代码,用于官方存储库的电话身份验证: quickstart-android for phone authentication

    然后,您应该准备好使用 Firebase 进行正确的电话身份验证。

    【讨论】:

    • 感谢您的评论,我尝试了这个解决方案,但它并没有帮助我解决这个问题。
    • 步骤:1 我已经删除了所有的多重注销并包含了 onStop() 方法。步骤:2 我已包含 intializeApp 方法步骤:3 我已更改清单文件
    • @Josh 解决问题应考虑的步骤:1) 将 FirebaseApp.initializeApp(this) 移至 CustomApplication 类。 2) 在 Manifest 中添加 CustomApplication 类名。 3) 在 MainActivity 中,从 onCreate 中移除 FirebaseAuth.getInstance().signOut() 并最终将其放入 onStop。 4) 为了获取phonenumber(OTP成功后),在task.isSuccessful()时放回intent.putExtra("phonenumber", phonenumber)。 5) 仅在单击 LogOut 按钮时将 Logout 的逻辑更改(重新排序)为 SignOut 从 FirebaseAuth
    • CustomApplication 执行什么样的操作?我不确定 EmojiManage 和 MapBox
    • 每个Android应用程序运行时,首先启动类Application。你可以重写这个类(CustomApplication这个名字是任意的,你可以选择任何你想要的名字)。当您覆盖 Application 类时,您可以进行额外的初始化。我首先放的代码是多个库初始化的示例。在您的情况下,只需输入class CustomApplication : Application() { override fun onCreate() { super.onCreate() /** * Firebase Initialization code * **/ FirebaseApp.initializeApp(this) }}
    猜你喜欢
    • 2020-06-26
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多