ReCaptcha
将Google的不可见ReCaptcha v2添加到您的项目中。此库自动处理ReCaptcha的事件并检索验证令牌,或者在无法不可见时通知您显示挑战。
⚠️
警告请注意,此库仅适用于ReCaptcha v2不可见密钥!确保在创建API密钥时检查reCAPTCHA v2不可见徽章选项。
您无法使用ReCaptcha v3密钥,因为它需要服务器端验证。在v3中,所有挑战都成功生成一个令牌,然后在服务器上进行验证以获得分值。因此,前端应用无法自行知道用户是否有效,因为挑战总是会生成一个有效的令牌。
安装
ReCaptcha通过CocoaPods和Carthage提供。要安装它,只需将以下行添加到您的依赖文件中
Cocoapods
pod "ReCaptcha"
# or
pod "ReCaptcha/RxSwift"
Carthage
github "fjcaetano/ReCaptcha"
Carthage 将创建两个不同的框架,分别为 ReCaptcha
和 ReCaptcha_RxSwift
,其中 ReCaptcha_RxSwift
包含 ReCaptcha 框架的 RxSwift 扩展。
使用方法
reCAPTCHA 密钥可以作为 Info.plist 键指定,或者在实例化 ReCaptcha() 时作为参数传递。
对于 Info.plist 的配置,添加 ReCaptchaKey
和 ReCaptchaDomain
(例如 http:// 或 https://)到您的 Info.plist 中,然后运行
let recaptcha = try? ReCaptcha()
override func viewDidLoad() {
super.viewDidLoad()
recaptcha?.configureWebView { [weak self] webview in
webview.frame = self?.view.bounds ?? CGRect.zero
}
}
func validate() {
recaptcha?.validate(on: view) { [weak self] (result: ReCaptchaResult) in
print(try? result.dematerialize())
}
}
如果您更喜欢不在 Info.plist 中保留信息,您可以使用
let recaptcha = try? ReCaptcha(
apiKey: "YOUR_RECAPTCHA_KEY",
baseURL: URL(string: "YOUR_RECAPTCHA_DOMAIN")!
)
...
您还可以安装响应式子 pod 并与 RxSwift 一起使用它
recaptcha.rx.validate(on: view)
.subscribe(onNext: { (token: String) in
// Do something
})
备用端点
如果您的应用有防火墙限制可能阻止 Google 的 API,JS 端点可以在初始化时更改。然后它将指向 https://www.recaptcha.net/recaptcha/api.js
public enum Endpoint {
case default, alternate
}
let recaptcha = try? ReCaptcha(endpoint: .alternate) // Defaults to `default` when unset
寻求帮助
您是否热爱 ReCaptcha 并积极在使用的应用上工作?我们非常希望您能帮助我们不断改进它!随时联系我们或者立即开始贡献!
完整的文档
许可证
ReCaptcha遵循MIT许可证。有关更多信息,请参阅LICENSE文件。