Próbuję zaimplementować Invisible reCAPTCHA za pomocą React i formularza Redux. Ogólnie rzecz biorąc, przepływ pracy Invisible reCAPTCHA to:Implementacja Invisible reCAPTCHA z formą Redux
- Oddaj "niewidzialną" CAPTCHA, zwracając identyfikator widgetu.
- Zadzwoń pod
grecaptcha.execute
z identyfikatorem widżetu. W razie potrzeby użytkownik zostanie poproszony o rozwiązanie problemu. Wynik jest przekazywany do funkcji zwrotnej określonej podczas renderowania CAPTCHA. - Wyślij formularz razem z wynikiem CAPTCHA.
Utworzyłem reagować składnik przeznaczony do stosowania z Redux formularza Field
że renderuje CAPTCHA i aktualizuje stan forma po grecaptcha.execute
nazywa się:
class ReCaptcha extends React.Component {
render() {
return <div ref={div => this.container=div} />
}
componentDidMount() {
const { input: { onChange }, sitekey } = this.props
grecaptcha.render(this.container, {
sitekey,
size: "invisible",
callback: onChange
})
}
}
Jednak nie wiem jak lub gdzie zadzwonić pod numer grecaptcha.execute
wraz z identyfikatorem widżetu po złożeniu formularza przez użytkownika. Nie mogę tego nazwać w onSubmit
, ponieważ identyfikator widżetu nie jest tam dostępny. Mogę nazwać to w ReCaptcha
natychmiast po renderowaniu CAPTCHA, ale jeśli użytkownik potrzebuje rozwiązać CAPTCHA, zostanie poproszony o zrobienie tego, gdy tylko formularz zostanie wyrenderowany.
Ten numer minimal working example pokazuje, co osiągnąłem do tej pory.
Mam zorientowali się, że o wiele łatwiej z [scriptjs] (https://github.com/ded/script.js) biblioteki. Przekażę przykład, jeśli chcesz. –