在 Android 应用程序中使用 Google reCAPTCHA

2024年11月12日 | 阅读需 3 分钟

在本教程中,我们将学习 Google reCAPTCHA 的工作原理并将其集成到我们的 Android 应用程序中。Google 的 reCAPTCHA 保护我们的应用程序免受恶意流量的侵害。它使用 SafetyNet API 实现。

Google reCAPTCHA 的工作原理

Google reCAPTCHA 通过 Android 应用程序、SafetyNet 服务器和您的服务器之间的网络调用进行验证。

  • Android 应用程序使用 站点密钥SafetyNet 服务器发出 reCAPTCHA 验证请求。
  • SafetyNet 服务器使用 站点密钥 向 Android 应用程序生成包含验证码令牌的响应。
  • 验证码令牌使用 秘密密钥 发送到您的服务器进行验证。
  • 您的 Android 服务器使用 秘密密钥SafetyNet 发出验证码令牌验证请求。
  • SafetyNet 验证令牌响应并返回成功或失败的结果。
  • 您的 Android 服务器通过验证令牌通知 Android 应用程序,并返回成功或失败的结果。

Using Google reCAPTCHA in Android Application

生成 reCAPTCHA 站点密钥和秘密密钥

在创建 API 密钥之前,请仔细阅读 API 服务条款:https://developers.google.com/terms/。

  • 注册 Android reCAPTCHA 站点:https://g.co/recaptcha/androidsignup。

Using Google reCAPTCHA in Android Application
  • 提供标签、包名等输入详细信息,并接受 reCAPTCHA 服务条款。
    标签:这是您密钥的唯一标签。您可以使用您的公司或组织名称。
    包名:这是您的 Android 应用程序的包名。

Using Google reCAPTCHA in Android Application
  • 站点密钥、秘密密钥、客户端集成代码和服务器端代码将在下一页生成。

Using Google reCAPTCHA in Android Application

集成 Google reCAPTCHA 的 Android 示例

让我们创建一个在 Android 应用程序中集成 Google reCAPTCHA 的示例。

build.gradle

在 build.gradle 文件中添加以下 SafetyNet 和 Volley 依赖项。

AndroidManifest.xml

在 AndroidManifest.xml 文件中添加互联网权限。

activity_main.xml

在 activity_main.xml 文件中添加以下代码。

MainActivity.java

在 MainActivity.java 类文件中添加以下代码。在此类中,我们与 SafetyNet 服务器进行客户端集成,并以 JSON 字符串形式获取响应。

将 SITE_KEY 和 SECRET_KEY 的值替换为您实际的站点密钥和秘密密钥。单击按钮时,它会调用 SafetyNet.getClient() 方法获取站点密钥,如果返回成功,则调用 handleSiteVerify() 进行令牌验证。

Volley 库用于以下目的:

  • Volley 库的 RequestQueue 维护服务器调用队列。
  • StringRequest 用于从您的服务器获取 JSON 字符串形式的响应。
  • setRetryPolicy() 方法在规定时间内失败时重试服务器调用。

输出

Using Google reCAPTCHA in Android Application Using Google reCAPTCHA in Android Application Using Google reCAPTCHA in Android Application Using Google reCAPTCHA in Android Application