Pu Zhibing
2025-12-11 ab0c19e49fabdb8cc6eea454ea455bce2efbb718
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
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> {
    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"))
  }
}