Я разрабатываю приложение для 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
Recaptcha не инициализируется при первом запуске приложения для Android. ⇐ Android
Форум для тех, кто программирует под Android
1729708447
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?
Подробнее здесь: [url]https://stackoverflow.com/questions/79119265/recaptcha-fails-to-initialize-on-first-launch-of-the-android-app[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия