Очень новый вопрос:
Я следую книге Дэвида Сулька Backbone.Marionette.js: A Serious Progression и пытаюсь изучить Backbone и Marionette. Я хочу использовать веб-API WordPress Gravity Forms в качестве сервера RestAPI, поскольку я не знаю ни одного языка на стороне сервера. Для аутентификации мне нужно включить этот файл JavaScript для создания rootUrl в модели и URL в коллекции: (http://www.gravityhelp.com/documentation/page/Web_API) Часть JavaScript.
Поэтому мне нужно включить 2 файла сценария в index.html (находится в корневой папке), прежде чем вот так:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script>
Затем в коллекции (расположенной в js/entities/contact.js) мне нужно сделать следующее:
ContactManager.module("Entities", function(Entities, ContactManager, Backbone, Marionette, $, _){
Entities.ContactCollection = Backbone.Collection.extend({
calculateSig: function(stringToSign, privateKey){
var hash = CryptoJS.HmacSHA1(stringToSign, privateKey);
var base64 = hash.toString(CryptoJS.enc.Base64);
return encodeURIComponent(base64);
},
url: function(){
var d = new Date,
expiration = 3600 // 1 hour,
unixtime = parseInt(d.getTime() / 1000),
future_unixtime = unixtime + expiration,
publicKey = "1234",
privateKey = "abcd",
method = "GET",
route = "forms/1/entries";
stringToSign = publicKey + ":" + method + ":" + route + ":" + future_unixtime;
sig = this.calculateSig(stringToSign, privateKey);
console.log(sig);
return sig;
},
model: Entities.Contact
});
});
Первый глупый вопрос, который у меня возникает, заключается в том, как я могу вызвать функцию «CryptoJS.HmacSHA1» и «CryptoJS.enc.Base64» в рамках calculateSig, который находится в коллекции Backbone... Если я использую свое пространство имен ContactManager.CryptoJS.HmacSHA1, оно все равно говорит Невозможно прочитать свойство «HmacSHA1» неопределенного.
Не знаю, как реализовать скрипт авторизации Gravity Form для генерации URL-адреса для магистрали. Пожалуйста помоги!
CryptoJS
- это глобальная переменная, также ожидается, что она не определена вContactManager.CryptoJS.HmacSHA1
, поскольку вы не определили модульCryptoJS
в своем приложении. Также не совсем понятно, почему вы используете Коллекцию для этой формы? это будет список форм? - person Evgeniy   schedule 11.12.2014