Ответ 1
Facebook использует oAuth 2.0, который намного проще реализовать, чем oAuth 1.0 (который использует твиттер).
Пример запроса API-интерфейса verify_credentials может выглядеть следующим образом:
https://api.twitter.com/1/account/verify_credentials.json?oauth_consumer_key=XXX&oauth_nonce=XXX&oauth_signature_method=HMAC-SHA1&oauth_token=XXX&oauth_timestamp=123456789&oauth_version=1.0&oauth_signature=YYY
- oauth_consumer_key является самоочевидной
- oauth_nonce может быть в значительной степени случайной строкой символов
- oauth_signature_method всегда HMAC-SHA1
- oauth_token - ваш токен доступа
- oauth_timestamp - текущая временная метка UNIX (в формате UTC)
- oauth_version всегда 1.0
- oauth_signature - это ваша сгенерированная подпись (которую twitter проверит путем воспроизведения)
Вы генерируете значение параметра oauth_signature, создавая базовую строку подписи, которая состоит из следующих частей.
- Метод HTTP в верхнем регистре (в данном случае
GET
) - амперсанд
&
- URL-кодированный базовый URI (все от
https
до и включая verify_credentials.json) - амперсанд
&
- все параметры запроса в алфавитном порядке, закодированные url. (oauth_signature НЕ следует включать в это, хотя)
Псевдокод в разделе Подписание запросов в документации Twitters описывает процесс подписи элегантно:
httpMethod + "&" +
url_encode( base_uri ) + "&" +
sorted_query_params.each { | k, v |
url_encode ( k ) + "%3D" +
url_encode ( v )
}.join("%26")
И затем вы подписываете полученную базовую строку, используя секрет потребителя, и секрет ключа доступа. Что все это тоже есть:)
Но перед выдачей каких-либо запросов API вам, конечно же, нужно будет получить токен доступа. Как только вы поймете поток oAuth 1.0 и процесс подписания. Ты будешь дома. Документация Twitter отлично справляется с объяснением процесса, но это довольно немного, чтобы обернуть голову. Стоит это хотя.