18034727885
2026-03-17 162564950c599a0d97ed9aade4301f8f6d285fbe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.google.recaptcha.sample
 
import androidx.fragment.app.FragmentManager
import java.util.Locale
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Deferred
 
class RecaptchaVisual(
    private val fragmentManager: FragmentManager,
    private val siteKey: String,
    private val baseUrl: String,
    private val lang: String = Locale.getDefault().getLanguage()
) : RecaptchaListener {
    private var onDone: CompletableDeferred<String> = CompletableDeferred()
 
    fun runCaptcha(): Deferred<String> {
        onDone = CompletableDeferred()
        val fragment = RecaptchaVisualFragment.newInstance(siteKey, baseUrl, lang)
        fragment.configure(this)
        fragment.show(fragmentManager, "RecaptchaVisual")
        return onDone
    }
 
    override fun onLoad() {
        // Do nothing
    }
 
    override fun onVerify(token: String) {
        onDone.complete(token)
    }
 
    override fun onError(error: RecaptchaVisualException) {
        onDone.completeExceptionally(error)
    }
 
    override fun onExpire() {
        onDone.completeExceptionally(RecaptchaVisualException("reCAPTCHA Expired"))
    }
}