我想使用 SafetyNet 验证电话号码 Firebase 而不是 reCAPTCHA 验证。我在这里关注 Firebase 文档:https ://firebase.google.com/docs/auth/android/phone-auth
- 在 Google API 控制台中,我启用了 Android 设备验证 API。
- 在 Firebase 控制台中,我添加了 SHA-256 指纹。
- 重新安装 google-service.json 并将其添加到项目中。
它总是将我重定向到网页以验证我不是机器人。我尝试删除
implementation 'androidx.browser:browser:1.3.0'
但是应用程序崩溃了。
这是我用于 SafetyNet 的代码,它总是成功但随后显示网页。我想知道如何防止应用程序始终重定向到 reCAPTCHA 验证,尽管 attest 功能工作正常。
private fun checkSafetyNet() {
if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
== ConnectionResult.SUCCESS
) {
val nonce =
(getString(R.string.app_name) + Random.nextInt(100) + getString(R.string.otp_verification)).toByteArray()
SafetyNet.getClient(this.requireActivity())
.attest(nonce, API_KEY)
.addOnSuccessListener {
// Indicates communication with the service was successful
setFirebasePhoneVerificationCallbacks()
startPhoneNumberVerification()
}.addOnFailureListener { e ->
// An error occurred while communicating with the service.
if (e is ApiException) {
// An error with the Google Play services API contains some
// additional details.
val apiException = e as ApiException
Log.i("SAFETYERROR", apiException.message.toString())
// You can retrieve the status code using the
// apiException.statusCode property.
} else {
// A different, unknown type of error occurred.
Log.d("SafetyNetError", "Error: " + e.message)
}
}
} else {
// Prompt user to update Google Play services.
}
}