2017-09-01 3 views
1

J'essaye d'implémenter le google reCAPTCHA dans mon application native de réaction. J'utilise un webview enveloppé.Réagir natif avec reCATPCHA

<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; 
} 

Si je rends, il me donne l'erreur suivante: ERROR for site owner: Invalid domain for site key

J'ai une théorie qu'il ne veut pas coopérer car je suis en cours d'exécution comme un « fichier » dans le WebView et que vous ne pouvez pas ajouter de fichiers dans le domaine du tableau de bord Google.

Y a-t-il un moyen d'ajouter file:// autorisations dans le tableau de bord reCAPTCHA de Google ou n'importe quel moyen de truquer un domaine, de sorte que je puisse ajouter ce domaine truqué dans le tableau de bord. Ou suis-je complètement perdu et la question est autre chose?

+0

Est-ce que ça marche si vous définissez un domaine avec baseUrl? ' mihai1990

+0

Oui, ça marche! Merci beaucoup pour votre retour. Si vous écrivez un exemple de solution, je peux le définir comme réponse acceptée. –

Répondre

0

Vous pouvez définir un domaine pour votre WebView en réglant baseUrl en source prop:

<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; 
}