Recaptcha не инициализируется при первом запуске приложения для Android.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Recaptcha не инициализируется при первом запуске приложения для Android.

Сообщение Anonymous »

Я разрабатываю приложение для Android, которое интегрирует Google reCAPTCHA (v3) для регистрации пользователей. Я столкнулся с постоянной проблемой, из-за которой клиенту reCAPTCHA не удается инициализироваться при первом запуске приложения для определенных устройств, что приводит к появлению сообщения об ошибке: «ReCAPTCHA не инициализировано. Повторите попытку». и инициализация не удалась, потому что «Неверный ключ сайта», ключ действителен и работает, когда вы закрываете приложение и открываете его снова. вот мой код и то, как я его реализую.
class ReCaptchaProjectClient(private val coroutineScope: CoroutineScope, private val application: Application) {

private lateinit var recaptchaClient: RecaptchaClient

init {
initializeRecaptchaClient()
}

private fun initializeRecaptchaClient() {
coroutineScope.launch {
try {
recaptchaClient = Recaptcha.fetchClient(
application,
"recaptchaSiteKey"
)
} catch (e: Exception) {
Log.e("ReCaptcha123", "Error initializing RecaptchaClient: $e")
}
}
}

fun executeRegisterAction(onTokenReceived: (String?) -> Unit) {
coroutineScope.launch {
try {
if (!::recaptchaClient.isInitialized) {
onTokenReceived(null)
return@launch
}

val token = withContext(Dispatchers.IO) {
recaptchaClient.execute(RecaptchaAction.SIGNUP)
}
onTokenReceived(token.toString().removePrefix("Success(").removeSuffix(")"))
} catch (e: Exception) {
onTokenReceived(null)
}
}
}

}

и я инициализирую его в своем классе приложения:
class PROJECTApp : Application(), CoroutineScope {

lateinit var recaptchaClient: RecaptchaClient
lateinit var reCaptchaProjectClient: ReCaptchaProjectClient
private val job = Job()

override val coroutineContext: CoroutineContext
get() = Dispatchers.Main + job

override fun onCreate() {
super.onCreate()
FirebaseApp.initializeApp(this)

reCaptchaProjectClient = ReCaptchaProjectClient(this, this)
initRecaptchaClient()
}

private fun initRecaptchaClient() {
launch {
try {
recaptchaClient = Recaptcha.fetchClient(this@PROJECTApp, "sitekey")
} catch (e: Exception) {
e.printStackTrace()
}
}
}

override fun onTerminate() {
super.onTerminate()
job.cancel()
}
}```

I have tried retry mechanism, ensuring the site key is correct moving the initializing to the activity and still the only way the problem goes away is to close the app and open it again, i cant find anyone else with the same issue, is there something im doing wrong?


Подробнее здесь: https://stackoverflow.com/questions/791 ... ndroid-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»