У меня возникла проблема при подписании запроса OAuth, который содержит массив в параметрах URL. Вот пример URL я хочу подписать:Подписание запроса OAuth с параметром массива
http://example.com/oauth1/products?filter[categorie]=myCategorie & страница = 1
Я использую OAuthSignatureJS, чтобы сгенерировать подпись, и она отлично работает при прохождении простых параметров, но при добавлении массива возвращается Недопустимая подпись. Я пытался использовать JSON вместо url, но все тот же, и я не могу изменить код сервера API.
Это функция вызова (AngularJS)
var request = generateRequest('GET', 'products', page, 'myCategorie');
request = request+'&page='+page+'&filter[categorie]=myCategorie';
$http.get(request, {timeout: config.timeout})
.success(function(json, status, headers, config){
})
.error(function(error){
console.log(error);
})
И это функция используется для создания запроса
var generateRequest = function(method, route, page = null, categorie = null) {
var timestamp = Math.floor(new Date().getTime()/1000);
var nonce = generateNonce();
var parameters = {
oauth_consumer_key: api.key,
oauth_nonce: nonce,
oauth_timestamp: timestamp,
oauth_signature_method: api.signature,
oauth_version: api.version
};
if(page) parameters.page = page;
if(categorie) {
parameters.filter = [];
parameters.filter['categorie'] = categorie;
console.log(parameters);
}
var link = 'http://example.com/oauth1/' + route;
// Generating the signature with OauthSignatureJS
var signature = oauthSignature.generate(method, link, parameters, api.secret);
var authentification = '?oauth_consumer_key='+api.key+'&oauth_signature_method='+api.signature+'&oauth_version='+api.version+'&oauth_timestamp='+timestamp+'&oauth_nonce='+nonce+'&oauth_signature='+signature;
return link+authentification;
}
При прохождении фильтра [Категория] параметр в URL, то сервер отвечает сообщением 401 Unauthorized.
Invalid Signature - provided signature does not match
Есть ли что-то не в порядке с моим кодом или это библиотека OauthSignature JS?
Заранее спасибо.