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 - это ваша сгенерированная подпись (которую твиттер проверит, воспроизведя)
Вы генерируете значение параметра oauth_signature, создавая базовую строку подписи, которая состоит из следующих частей.
- HTTP-метод в верхнем регистре (в данном случае
GET
) - амперсанд
&
- базовый URI в кодировке URL (все от
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 и процесс подписания.Ты будешь дома.Документация Твиттера делает большую работу по объяснению процесса, но это довольно сложная задача.Хотя это того стоит.