Previous Entry Поделиться Next Entry
OAUTH 1.0, 1.0A и 2.0 в одном течении
likhatskiy
 В силу стремительного распространения OAUTH, решил внедрить его в своих проектах. Начал разбираться, выяснилось что есть аж три версии протокола: 1.0, 1.0A и 2.0. Побродил по cpan и нашел реализацию только 1.0 и 1.0A. Казалось бы этого должно хватить, да вот у twitter 1.0A, а у facebook 2.0. Хочется поддерживать обе социальные сети, в силу их популярности. Протокол 2.0 никто не реализовал на перл. Ну что же, занялся этим сам.

Почитал спецификацию всех протоколов. Составил схему в mindmanager, чтобы понять как их объединить. И написал модуль, который поддерживает все существующие версии протокола. Пока выложил только на github . Документации думаю пока хватит, никак не соберусь ее дописать ...
Метки: , ,

  • 1
Приветствую, коллега.
Во-первых, спасибо за функциональный и одновременно читабельный модуль.

Во-вторых, есть вопрос.

Есть такой код:

my $ua = LWP::UserAgent->new;
my $res;
my $conf;
my $oauth;
$conf = {
consumer_key => 'RRgvakiqS2sDcH2xAYbk9Q',
consumer_secret => '0D3Pp4YbEKbCBnWv1WwRQFufqg1nKo8lWkiuI1EdM',
signature_method => 'HMAC-SHA1',

request_token_url => 'https://twitter.com/oauth/request_token',
authorization_url => 'https://twitter.com/oauth/authorize',
access_token_url => 'https://twitter.com/oauth/access_token',
};
$oauth = Net::OAuth::All->new(%$conf);
$res = $ua->get($oauth->request('request_token')->to_url);
my $request_token;
my $request_token_secret;
if ($res->is_success)
{
$oauth->response->from_post_body($res->content);
$request_token = $oauth->token;
$request_token_secret = $oauth->token_secret;
}
else
{
print STDERR "Something went wrong::".Dumper($res);
}
return OK;


Он пытается получить от твиттера request_token. Коды все правильные, апп зареган и т.п.
Твиттер токена не отдает, в $res->_content "Failed to validate oauth signature and token".
Еще там есть, вероятно, полезное "client-warning => Missing Authenticate header".

Googled it till my fingers bleed, но там рекомендации в духе "ой, а у меня все работает, проблема точно у вас" или "переведите часы на сервере". Часы в порядке :)

Собственно, вопрос - наверняка тестили модуль на работу с твиттером, может быть есть кусочек перлового кода, который работает с твиттером?

В свою очередь обещаю помочь с документацией, как своего консумера допишу.
Заранее спасибо.

  • 1
?

Log in

No account? Create an account