По сути, вам нужно использовать алгоритм HMAC-SHA1 вместо MD5. Я проведу тебя через это.
1. Создать базовую строку подписи
Вы, кажется, делаете это (но вы назначаете это непосредственно в переменную подписи). Компиляция базовой строки выполняется путем объединения трех разных частей.
- Преобразовать метод HTTP в верхний регистр и установить базовую строку равной этому значению. Пример:
GET
- Добавление символа '&' к базовой строке.
- Процент кодирования URL (без параметров) и добавление его к базовой строке. Пример:
http%3A%2F%2Fexample.com%2Frequest
- Добавьте символ '&' к базовой строке.
- Процент кодирования отсортированной строки параметров и добавление ее к базовой строке.
Это должно выглядеть так:
GET&http%3A%2F%2Fexample.com%2Frequest&a2%3Dr%2520b%26a3%3D2%2520q
%26a3%3Da%26b5%3D%253D%25253D%26c%2540%3D%26c2%3D%26oauth_consumer_
key%3D9djdj82h48djs9d2%26oauth_nonce%3D7d8f3e4a%26oauth_signature_m
ethod%3DHMAC-SHA1%26oauth_timestamp%3D137131201%26oauth_token%3Dkkk
9d7dh3k39sj
Теперь вы закончили с базовой строкой подписи. Давайте перейдем к
2. Выяснение вашего ключа подписи.
Ваш ключ подписи имеет следующий формат: CONSUMER_SECRET + "&" + TOKEN_SECRET
. Но поскольку у вас еще нет токена, ключ подписи является секретом потребителя и амперсандом. Вот так: CONSUMER_SECRET + "&"
.
Для всех запросов, кроме первого, у вас будет токен, либо токен запроса, либо токен доступа.
3. Объедините ключ и базовую строку, используя алгоритм HMAC-SHA1.
Я использовал http://code.google.com/p/as3crypto/ при подписании с AS3. Вы даже можете проверить его алгоритм HMAC-SHA1 на этой демонстрационной странице: http://crypto.hurlant.com/demo/.
Использовать базовую строку в качестве ввода и ключ подписи в качестве ключа алгоритма HMAC-SHA1.
Выход алгоритма HMAC-SHA1 будет двоичной строкой, которая должна быть закодирована в base64 для получения окончательной сигнатуры. Это должно выглядеть примерно так:
NYIQGEwIomgCuVOIA28pMDMID78=
Это должно быть отправлено с запросом в качестве параметра oauth_signature
.