Firebase为什么未提交身份验证结果返回null?

我正在尝试使用Firebase身份验证实施使用Apple登录。我正在关注firebase/quickstart-android示例。

我的登录片段会覆盖onStart()来检查是否有任何未决结果:

override fun onStart() {
    super.onStart()

    val pending = auth.pendingAuthResult

    pending?.addOnSuccessListener { authResult ->
        Timber.d("Successful login,pending")
    }?.addOnFailureListener { e ->
        Timber.d("Failed login,pending")
    }
}

和一个用于启动登录流程的按钮:

btnApple.onClick {
    viewModel.appleLogin(requireactivity())
}

viewModel从存储库中调用以下方法:

// Initiate sign-in flow only if there are no pending results
if (auth.pendingAuthResult != null) {
    return
}

val scopes = listOf("email","name")
val provider = OAuthProvider.newBuilder("apple.com",auth)
    .setScopes(scopes)
    .build()

auth.startactivityForSignInWithProvider(activity,provider)
    .addOnSuccessListener { authResult ->
        Timber.d("Successful login,normal")
    }
    .addOnFailureListener { e ->
        Timber.e(e,"Failed login,normal")
    }

official manual指出:

使用此方法登录会将您的活动置于后台,这意味着在登录流程中系统可以收回该活动。

因此,我通过终止Android Studio中的应用程序同时完成Chrome中的登录流程来开始测试待处理结果。回到应用程序后,将调用onStart(),但pendingAuthResult始终为空。

为了使它更有趣,当我重新启动应用程序时,我已经登录。然后,如果我注销并再次输入登录片段,则现在有一个待处理的结果,并且我收到Successful login,pending。最重要的是,待处理结果不会消失。如果我离开登录片段然后返回,则挂起的结果仍然存在,并且还会收到另一个Successful login,pending

我什至对firebase/quickstart-android样本本身进行了测试,并且问题完全相同。

此问题的可能原因是什么?我正在使用firebase-auth:19.2.0

chengzhangba 回答:Firebase为什么未提交身份验证结果返回null?

如果您正在使用Firebase与Apple进行签名,并且是手动处理的,则应使用字符串解码机制。请找到相同的Firebase指南,希望它能起作用。让我知道是否有任何问题!

Firebase guild signing with apple

本文链接:https://www.f2er.com/2777411.html

大家都在问