ReCaptcha 1.6.0

ReCaptcha 1.6.0

测试测试
语言语言 SwiftSwift
许可 MIT
发布最新版本2021年1月
SPM支持SPM

Flávio Caetano维护。



ReCaptcha 1.6.0

ReCaptcha

Build Status codecov PRs welcome Carthage compatible Version License Platform


将Google的不可见ReCaptcha v2添加到您的项目中。此库自动处理ReCaptcha的事件并检索验证令牌,或者在无法不可见时通知您显示挑战。

Example Gif 2 Example Gif

警告⚠️

请注意,此库仅适用于ReCaptcha v2不可见密钥!确保在创建API密钥时检查reCAPTCHA v2不可见徽章选项。

ReCaptcha v2 invisible key example

您无法使用ReCaptcha v3密钥,因为它需要服务器端验证。在v3中,所有挑战都成功生成一个令牌,然后在服务器上进行验证以获得分值。因此,前端应用无法自行知道用户是否有效,因为挑战总是会生成一个有效的令牌。

安装

ReCaptcha通过CocoaPodsCarthage提供。要安装它,只需将以下行添加到您的依赖文件中

Cocoapods

pod "ReCaptcha"
# or
pod "ReCaptcha/RxSwift"

Carthage

github "fjcaetano/ReCaptcha"

Carthage 将创建两个不同的框架,分别为 ReCaptchaReCaptcha_RxSwift,其中 ReCaptcha_RxSwift 包含 ReCaptcha 框架的 RxSwift 扩展。

使用方法

reCAPTCHA 密钥可以作为 Info.plist 键指定,或者在实例化 ReCaptcha() 时作为参数传递。

对于 Info.plist 的配置,添加 ReCaptchaKeyReCaptchaDomain(例如 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文件。