Как кодировать с помощью JS - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь сгенерировать некоторую подпись для стороннего API и получаю следующую ошибку: Партнер не авторизован.Это означает, что я не закодировал свой поисковый запрос и не создал подпись.

Подпись - это закодированное хешированное значение метки времени, ключа доступа и условий запроса.

Ниже указан мой код:

const timestamp = Date.now();
const searchTerm = encodeURI(this.state.searchText);
const signature = sha1(timestamp + searchTerm);

Третий Для безопасности веб-страницы термин запроса должен быть закодирован в JavaScript перед его отображением на странице.Вот пример: queryTermEncoded = '@ HttpUtility.JavaScriptStringEncode (queryTerm)';

Как кодировать метку времени и подпись сверху, похоже, что encodeURI не работает и я не могу кодировать?Мне нужно как-то кодировать отметку времени и searchTerm.

Вот несколько примеров, написанных на Java, Ruby и т. Д.

http://www.infospace.com/partners/sdk/csr/signingSample.html

1 Ответ

0 голосов
/ 08 октября 2018

Основываясь на примере C #, я думаю, что проблема была с датой и encodeURI, попробуйте это:

// now UTC
var date = new Date(Date.now());
// add 30 seconds like the examples
date.setSeconds(date.getSeconds() + 30);
// format to "yyyyMMddHHmm"
const timestamp = date.toISOString().replace(/[^0-9]/g, '').substr(0, 12);

// dont need to encode
const searchTerm = this.state.searchText; 

// hash timestamp + token + searchTerm
const signature = sha1(timestamp + token + searchTerm);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...