[Twitter]Net::Twitterを使ったOAuthの実装

By tkumakiti - Last updated: 木曜日, 2月 25, 2010 - Save & Share - Leave a Comment

Net::Twitterを使ったOAuth実装を掲載します。よかったら参考にしてやってくださいな。
それにしても、perldoc Net::Twitter::Role::OAuthを見ていたら
my($self,$c) = @_;
$cってなんだ???ってハマってたら、Catalyst使ってるんですね。。。
わたしゃ使ってないんで、最初全然わからんかった。。(; ;

# cat auth.cgi

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Net::Twitter;
use CGI qw/:standard/;
use CGI::Cookie;

my $consumer_key = 'CONSUMER_KEY';
my $consumer_key_secret = 'CONSUMER_KEY_SECRET';
my $callback_url = 'http://hoge.com/callback.cgi';
my $q = CGI->new();

my $nt = Net::Twitter->new (
traits => ['API::REST', 'OAuth'],
consumer_key => $consumer_key,
consumer_secret => $consumer_key_secret,
);

my $url = $nt->get_authorization_url( callback => $callback_url );

#---callback.cgiにsecretを渡すためにファイルに書き出した(tokenはオマケ)
my $oauth_token = $nt->request_token;
my $oauth_secret = $nt->request_token_secret;
open OUT, ">/tmp/oauth.txt";
print OUT "$oauth_token&$oauth_secret\n";
close OUT;

print $q->redirect( $url );
exit;

# cat callback.cgi

#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Net::Twitter;
use CGI qw/:standard/;
use CGI::Cookie;

my $consumer_key = 'CONSUMER_KEY';
my $consumer_key_secret = 'CONSUMER_KEY_SECRET';
my $q = CGI->new();

#--- パラメータでoauht_tokenも返してくれる
my $oauth_token = $q->param('oauth_token');
my $oauth_verifier = $q->param('oauth_verifier');

open IN, " my $buf = ;
close IN;
chomp $buf;
my @param = split( /&/, $buf );
my $oauth_secret = $param[1];

my $nt = Net::Twitter->new (
traits => ['API::REST', 'OAuth'],
consumer_key => $consumer_key,
consumer_secret => $consumer_key_secret,
);

$nt->request_token( $oauth_token );
$nt->request_token_secret( $oauth_secret );
my( $access_token, $access_token_secret, $user_id, $screen_name )
= $nt->request_access_token( verifier => $oauth_verifier );

exit;

screen_nameかuser_idをキーにでもして、access_*を管理できそうだな。。

Posted in [ソフト開発] • Tags: , Top Of Page

Write a comment