fc2ブログ

コマネタ帳(旧) by iyoupapa

PCや土いじりやゲームやオモチャ、思いつくまま細切れネタを書き散らかす日記

Creative Commons Licenseiyoupapaが書いたコマネタ帳の文章は「Creative Commons 表示-継承 2.1 日本」ライセンスです。写真については私のFlickrで配布しています。新しい「コマネタ帳」に移転しました。

[プログラミング]TwitterのBotをOAuth対応にする

第15回北海道開発オフ@JRHokkaidoSapをOAuth対応に修正したときのメモ。

1.アプリケーションの登録

  • アプリケーション作成者のアカウント(この場合@iyoupapa)でTwitterにログインして「Twitter / アプリケーション」から「Register a new application」を選択する。
  • 「Application Icon」を設定する。
  • 「Application Name」にアプリケーション名を適当に入れる。
  • 「Description」に最低30文字を入れる。
  • 「Application Website」にこのブログのURLを入力する。
  • 「Application Type」を「Client」にする。
  • 「Default Access Type」を「Read & Write」にする。
  • 個人なので、「Organization」、「サイト」は空欄にする。
  • 「Use Twitter for login」はチェックしない。
  • CAPTCHAを入力して登録する。
  • 登録後の「Consumer key」と「Consumer secret」をコピペ保存する。

2.アクセストークンの取得

  • Net::Twitterを準備する。Windows の ActivePerlの時はPPM(Perl Package Manager)からNet-Twitterをインストールする。
  • Twitterに「Botが動作するアカウント(この場合@JRHokkaidoSap)」でログインする。
  • 以下のコードにConsumer keyとConsumer secretを書き込んで実行する。
  • 表示されたURLにアクセスして、アクセスを許可する。
  • 数字が大きく表示されるので、その数字を先ほどのスクリプトに入力する。
  • 「Access token」と「Access token secret」が表示されるのでコピペ保存する。
#!/user/bin/perl
use strict;
use warnings;

use utf8;
use Encode;
use Net::Twitter;

binmode STDOUT, ':encoding(shiftjis)';
binmode STDERR, ":encoding(shiftjis)";

my $nt = Net::Twitter->new(
  traits      => ['API::REST', 'OAuth'],
  consumer_key  => "CONSUMERKEY",    # ←
  consumer_secret  => "CONSUMERSECRET", # ←
);

my $access_token;
my $access_token_secret;

unless ( $nt->authorized ) {
  # The client is not yet authorized: Do it now
  print "Authorize this app at ",
   $nt->get_authorization_url,
   " and enter the PIN#\n";

  my $pin = <STDIN>; # wait for input
  chomp $pin;

  my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $pin);
  #  save_tokens($access_token, $access_token_secret); # if necessary
  print "Access token: ", $access_token, "\n";
  print "Access token secret: ", $access_token_secret, "\n";
}

3.本体スクリプトの修正

  • ログイン部を修正する。
sub initTwitter
{
  $bot = new Net::Twitter( 
    traits           => ['API::REST', 'OAuth'],
    consumer_key     => $CONSUMER_KEY,
    consumer_secret  => $CONSUMER_SECRET,
  );
  $bot->access_token($ACCESS_TOKEN);
  $bot->access_token_secret($ACCESS_TOKEN_SECRET);
}

4.多分OK!

お疲れ様でした。…いやまだ実環境に適用していないんだけどw。

5.おまけ

PPMもNet::Twitterもプロクシを超えるときは環境変数HTTP_PROXYに”http://proxyhost:8080/”などと設定しておけばいい。LWP::UserAgentは環境変数だけでは認識しないので、env_proxyを呼び出す。

  my $ua = LWP::UserAgent->new;
  $ua->env_proxy;

これまでプロクシのない環境ばかりだったので、こんな基本も知らないのさ><。

6.Thanks

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://iyouneta.blog49.fc2.com/tb.php/446-4bc3af4a

-

管理人の承認後に表示されます

skin presented by myhurt : BLOG | SKIN
  
copyright © 2005 コマネタ帳(旧) some rights reserved. Powered by FC2ブログ