как интегрировать гугл-рекапчу в оракул-джет - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь интегрировать google-recaptcha, но безуспешно.

Получение ошибки

feedback.js: 39 Uncaught TypeError: grecaptcha.render не является функцией

main.js 'googlerecaptcha': 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit',

define(['ojs/ojcore', 'knockout', 'jquery', 'appController', 'ckeditor', 'googlerecaptcha', 'ojs/ojlabel',  
    'ojs/ojknockout', 'ojs/ojinputtext', 'ojs/ojformlayout'],  
        function (oj, ko, $, app, ckeditor, grecaptcha) {  
            /** 
             * The view model for the main content view template 
             */  
            function feedbackViewModel() {  
                var self = this;  
                // For small screens: labels on top  
                // For medium screens and up: labels inline  
                this.labelEdge = ko.computed(function () {  
                    return app.smScreen ? "top" : "start";  
                }, this);  



                onloadCallback = function (a) {  
                    grecaptcha.render('submit', {  
                        'sitekey': 'YOUR_API_KEY',  
                        'callback': self.onSubmit  
                    }, true);  
                };  


                this.handleActivated = function (info) {  
                };  
                self.onSubmit = function (token) {  
                    console.info("google recatpcha onSubmit", token)  
                    //do validation/application code using token  
                    var data = {secret: grecaptcha, response: recaptchaToken};  
                    $.post({  
                        url: "https://www.google.com/recaptcha/api/siteverify",  
                        form: data  
                    }).then(function (e) {  
                        //recaptcha service called...check result  
                        var resp = JSON.parse(e);  
                        if (resp.success == false) {  
                            console.info("recaptcha token outcome is false")  


                        } else {  
                            console.info("recaptcha token validated")  
                        }  
                    });  
                };  
            }  


            return feedbackViewModel;  
        });  

1 Ответ

0 голосов
/ 29 марта 2019

У вас есть сопоставление для "googlerecaptcha" в src / js / path_mapping.json? Если я перейду к https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit,, я не увижу, что он возвращает какой-либо действительный объект. Поэтому, скорее всего, переменная grecaptcha не определена.

reCaptcha + RequireJS

Похоже, reCaptcha - это функция, которая должна быть выполнена против объекта, с которым можно напрямую взаимодействовать. Поэтому вам может понадобиться другой подход, упомянутый в этой теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...