Net::Twitterで、OAuthしてみる(API 1.1)
2013年8月20日
認証ページURLの生成
use strict; use warnings; use utf8; use Net::Twitter; my $nt = Net::Twitter->new( traits => [qw/API::RESTv1_1 OAuth/], consumer_key => 'xxxxxxxxxxxxxxxxxx', consumer_secret => 'xxxxxxxxxxxxxxxxxx', ); my $callback = 'http://xxxxxxxxxxxxxx/callback'; # 認証済みの場合は、リダイレクトで戻ってくるURLの生成 my $url = $nt->get_authentication_url( callback => $callback ); # 認証済みでも、毎回認証するURLの生成 # my $url = $nt->get_authorization_url( callback => $callback ); # callbackで使うので、どこかに保存しておく(sessionとか) my $request_token = $nt->request_token; my $request_token_secret = $nt->request_token_secret; return $url; # リダイレクトするなり、どこかにリンク貼るなり。
「get_authentication_url」の場合は、認証済みの場合にそのままcallbackで指定したURLに戻る
「get_authorization_url」の場合は、認証済みであっても、認証ページを経由してcallbackへ戻る
Callback(認証後に返ってくるページ)
Twitterから戻ってくる際に、パラメータとして、「oauth_token」と「oauth_verifier」が返ります。
それに先ほどの「request_token」と「request_token_secret」の4つを合わせて、
「access_token」、「access_token_secret」を取得する事ができます。
use strict; use warnings; use utf8; use Net::Twitter; my $nt = Net::Twitter->new( traits => [qw/API::RESTv1_1 OAuth/], consumer_key => 'xxxxxxxxxxxxxxxxxx', consumer_secret => 'xxxxxxxxxxxxxxxxxx', ); my $oauth_token = ''; # Twitterから送られる my $oauth_verifier = ''; # Twitterから送られる my $request_token = ''; # 認証URLを生成した時に保存しておいたもの my $request_token_secret = ''; # 認証URLを生成した時に保存しておいたもの # tokenのチェック( 認証時に保存したrequest_tokenと、Twitterから送られるoauth_tokenは同じ文字列です) die unless ( $oauth_token eq $request_token ); $nt->request_token( $request_token ); $nt->request_token_secret( $request_token_secret ); my ( $access_token, $access_token_secret, $id, $screen_name ) = $nt->request_access_token( verifier => $args->{'oauth_verifier'}, ); # $access_tokenと、$access_token_secretを保存
てな感じで、Twitterにアクセスする為の「access_token」と、「access_token_secret」が取得できました。
これでAPI叩きまくれますね!!