Реагируй с родным с reCATPCHA

Я пытаюсь внедрить Google ReCAPTCHA в моем собственном приложении. Я использую упакованный веб-просмотр.

<WebView 
    javaScriptEnabled={true} 
    mixedContentMode={'always'} 
    style={{height: 200}} 
    source={{
        html: this.getWebviewContent()
    }}/>


getWebviewContent(){
    var originalForm = '<!DOCTYPE html><html><head><script src="https://www.google.com/recaptcha/api.js"></script></head><body><form action="[POST_URL]" method="post"><input type="hidden" value="[TITLE]"><input type="hidden" value="[DESCRIPTION]"><input type="hidden" value="[URL]"><div class="g-recaptcha" data-sitekey="<My key>"></div><input type="submit" value="Send"/></form></body></html>'
    var tmp =  originalForm
        .replace("[POST_URL]", "http://localhost:3000/v1/video")
        .replace("[TITLE]", this.state.form.title)
        .replace("[DESCRIPTION]", this.state.form.description)
        .replace("[URL]", this.state.form.url); 

    return tmp; 
}

Если я отрендерю его, он выдаст мне следующую ошибку: ОШИБКА для владельца сайта: неверный домен для ключа сайта

У меня есть теория, что он не хочет сотрудничать, так как я запускаю его как "файл" в WebView и что вы не можете добавлять файлы как часть домена в панель инструментов Google.

Есть ли способ добавить file:// разрешения на панели инструментов reCAPTCHA в Google или любой способ подделки домена, чтобы я мог добавить этот поддельный домен в панель управления. Или я полностью потерян и проблема в чем-то другом?

1 ответ

Решение

Вы можете установить домен для вашего WebView, установив baseUrl в source проп:

<WebView 
    javaScriptEnabled={true} 
    mixedContentMode={'always'} 
    style={{height: 200}} 
    source={{
        html: this.getWebviewContent(),
        baseUrl: 'http://your-domain.com' // <-- SET YOUR DOMAIN HERE
    }}/>


getWebviewContent(){
    var originalForm = '<!DOCTYPE html><html><head><script src="https://www.google.com/recaptcha/api.js"></script></head><body><form action="[POST_URL]" method="post"><input type="hidden" value="[TITLE]"><input type="hidden" value="[DESCRIPTION]"><input type="hidden" value="[URL]"><div class="g-recaptcha" data-sitekey="<My key>"></div><input type="submit" value="Send"/></form></body></html>'
    var tmp =  originalForm
        .replace("[POST_URL]", "http://localhost:3000/v1/video")
        .replace("[TITLE]", this.state.form.title)
        .replace("[DESCRIPTION]", this.state.form.description)
        .replace("[URL]", this.state.form.url); 

    return tmp; 
}
Другие вопросы по тегам