105 lines
3.7 KiB
Markdown
105 lines
3.7 KiB
Markdown
# ReCaptcha
|
|
|
|
[](https://travis-ci.org/fjcaetano/ReCaptcha)
|
|
[](http://cocoapods.org/pods/ReCaptcha)
|
|
[](http://cocoapods.org/pods/ReCaptcha)
|
|
[](http://cocoapods.org/pods/ReCaptcha)
|
|
[](https://codecov.io/gh/fjcaetano/ReCaptcha)
|
|
[](https://github.com/Carthage/Carthage)
|
|
|
|
-----
|
|
|
|
Add Google's [Invisible ReCaptcha v2](https://developers.google.com/recaptcha/docs/invisible) to your project. This library
|
|
automatically handles ReCaptcha's events and retrieves the validation token or notifies you to present the challenge if
|
|
invisibility is not possible.
|
|
|
|
 
|
|
|
|
#### _Warning_ ⚠️
|
|
|
|
Beware that this library only works for ReCaptcha v2 Invisible keys! Make sure to check the reCAPTCHA
|
|
v2 Invisible badge option when creating your [API Key](https://www.google.com/recaptcha/admin/create).
|
|
|
|

|
|
|
|
You won't be able to use a ReCaptcha v3 key because it requires server-side validation. On v3, all
|
|
challenges succeed into a token which is then validated in the server for a score. For this reason,
|
|
a frontend app can't know on its own wether or not a user is valid since the challenge will always
|
|
result in a valid token.
|
|
|
|
## Installation
|
|
|
|
ReCaptcha is available through [CocoaPods](http://cocoapods.org) and [Carthage](https://github.com/Carthage/Carthage).
|
|
To install it, simply add the following line to your dependencies file:
|
|
|
|
#### Cocoapods
|
|
``` ruby
|
|
pod "ReCaptcha"
|
|
# or
|
|
pod "ReCaptcha/RxSwift"
|
|
```
|
|
|
|
#### Carthage
|
|
``` ruby
|
|
github "fjcaetano/ReCaptcha"
|
|
```
|
|
|
|
Carthage will create two different frameworks named `ReCaptcha` and `ReCaptcha_RxSwift`, the latter containing the RxSwift
|
|
extension for the ReCaptcha framework.
|
|
|
|
## Usage
|
|
|
|
Simply add `ReCaptchaKey` and `ReCaptchaDomain` (with a protocol ex. http:// or https://) to your Info.plist and run:
|
|
|
|
``` swift
|
|
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())
|
|
}
|
|
}
|
|
```
|
|
|
|
You can also install the reactive subpod and use it with RxSwift:
|
|
|
|
``` swift
|
|
recaptcha.rx.validate(on: view)
|
|
.subscribe(onNext: { (token: String) in
|
|
// Do something
|
|
})
|
|
```
|
|
|
|
#### Alternte endpoint
|
|
|
|
If your app has firewall limitations that may be blocking Google's API, the JS endpoint may be changed on initialization.
|
|
It'll then point to `https://www.recaptcha.net/recaptcha/api.js`:
|
|
|
|
``` swift
|
|
public enum Endpoint {
|
|
case default, alternate
|
|
}
|
|
|
|
let recaptcha = try? ReCaptcha(endpoint: .alternate) // Defaults to `default` when unset
|
|
```
|
|
|
|
## Help Wanted
|
|
|
|
Do you love ReCaptcha and work actively on apps that use it? We'd love if you could help us keep improving it!
|
|
Feel free to message us or to start contributing right away!
|
|
|
|
## [Full Documentation](http://fjcaetano.github.io/ReCaptcha)
|
|
|
|
## License
|
|
|
|
ReCaptcha is available under the MIT license. See the LICENSE file for more info.
|