Создать подпись для аутентификации Flickr (Android SDK) - PullRequest
3 голосов
/ 28 февраля 2012

Я хочу загрузить изображения на Flickr с помощью моего маленького Android-приложения. Таким образом, пользователь должен войти в систему и принять разрешения.

Моя проблема в том, что я не знаю, каковы параметры для создания подписи. Это написано на сайте Flickr:

Базовая строка создается путем объединения HTTP-глагола, URL-адреса запроса и всех параметров запроса, отсортированных по имени, с использованием лексикографического порядка следования байтов, разделенных символом «&».

Что такое "параметры запроса"? Я пробовал это несколько раз с разными параметрами, но всегда получал эту ошибку: «Неверный ключ API или подпись».

Большое спасибо за помощь!

1 Ответ

6 голосов
/ 28 февраля 2012

Давайте разберемся.

Вы должны начать с глагола HTTP. Допустим, вы делаете запрос GET. Часть 1 базовой строки подписи:

GET

Тогда предположим, что вы звоните по URL http://www.example.com/api/?filename=hello.jpg. Игнорируйте параметр, и вы получите часть 2:

http://www.example.com/api/

Тогда предположим, что у вас есть следующие параметры, filename из приведенного выше URL. Те, которые начинаются с oauth_, необходимы для того, чтобы запрос был разрешен сервером.

  • oauth_consumer_key = 9djdj82h48djs9d2
  • oauth_token = kkk9d7dh3k39sjv7,
  • oauth_signature_method = HMAC-SHA1
  • oauth_timestamp = 137131201
  • oauth_nonce = 7d8f3e4a
  • имя_файла = hello.jpg

Все вышеперечисленные параметры должны быть отсортированы в лексикографическом порядке значений байтов (в основном в алфавитном порядке), разделенных символом «&». Теперь у вас будет третья часть:

filename=hello.jpg&oauth_consumer_key=9djdj82h48djs9d2& oauth_nonce=7d8f3e4a&oauth_signature_method=HMAC-SHA1&oauth_timestamp= 137131201&oauth_token=kkk9d7dh3k39sjv7

Теперь вам нужно кодировать URL часть 2 и часть 3. Затем объединить три части, в результате чего:

GET&http%3A%2F%2Fwww.example.com%2Fapi%2F&filename%3Dhello.jpg%26oauth_consumer_key%3D9djdj82h48djs9d2%26%0Aoauth_nonce%3D7d8f3e4a%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D%0A137131201%26oauth_token%3Dkkk9d7dh3k39sjv7

Это базовая строка. Теперь вам нужно подписать его с помощью алгоритма HMAC-SHA1, итоговая подпись должна быть отправлена ​​вместе с запросом.

...