PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法

カテゴリー:Perl・Javascript・python、サーバー管理メモ(記事数:83)



↑B


2009.10.01

PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法

※下記記事は勘違いがありました、勘違い部分に関してここにメモ
99%以上の人は興味無いでしょうけど誰かの役に立つかもしれないのでメモ。

GPSMANはPerlのNet::Twitterというモジュールでつぶやきに位置情報を載せてTwitterに投稿しますが、そのままでは「from Net::TWitter」と表示されてしまいました。
最初は投稿時にクライアント名を指示してやれば良いかと思っていたら、そんな簡単にはいかなくてTwitterサーバー側のリストに登録されないといけないと知りました。方法はここを見ると、「開発者にメールしてお願いする」とか書いてあり、なんてローテクな!と思いつつも
Subject: Please list up my Twitter client
Dear Mr. Akex Payne
Thank you for developing interesting and enjoyful tool,Twitter.
Please adding my Twitter client to your client source list.

My client is
source='GPSMAN'
client's URL='http://gpstown.net'

I'm sorry that above client is for Japanese user and URL is written in Japanese.
The main feature of my client is updating our situation with place name using geo-information function of cellular phone.
I heard Twitter is getting ready to adding geo-information function.
I'm looking forward to Twitter world with geo-information.

Thank you.
とか英語力微妙なくせにイランことまで書いたところで、Twitterの公式APIを見て登録の方式が変わったことに気が付く。何でもOAuthとか言う俺みたいなヘタレプログラマには理解しがたい仕組みで認証させないといけないらしい。でもどうにか後述する参考ページを真似して解決出来たので実際に使用したプログラムを公開。要は秘密コードを元に取得した秘密コードでアクセス?ん〜なんでそんな面倒な事をする必要があるのか有用性がよく分からないけど。

★STEP1:開発者としてアプリをTwitterに登録してcunsumer codeを取得
ここにアクセスして作ったアプリ情報を登録、CONSUMER CODEを得る。

★STEP2:ACCESS TOKEN CODEを得る。
-------------------------------------
#!/usr/bin/perl
#Twitter のaccess tokenを取得
use Net::Twitter;
my $twit = Net::Twitter->new(traits=>['API::REST','OAuth'],consumer_key=>'取得したコード',consumer_secret=>'取得したコード');
print 'access this url:'.$twit->get_authorization_url."\n";
print 'input verifier PIN : ';
my $verifier =;
chomp $verifier;
my $token = $twit->request_token;
my $token_secret = $twit->request_token_secret;
$twit->request_token($token);
$twit->request_token_secret($token_secret);
my($at, $ats) = $twit->request_access_token(verifier => $verifier);
print "Access token : ".$at."\n";
print "Access token secret : ".$ats."\n";
exit;
----------------------------------------
で取得したconsumer codeを使って、認証URLにアクセスし、アクセス許可ボタンを押して表示させたPINコードを入力してACCESS TOKEN CODEを得る。これは最初に1回でいいらしい。

★STEP3:得たコードを使って「つぶやき」を投稿
-----------------------------------
#!/usr/bin/perl
#twitterに書き込み

use Net::Twitter;
use Encode;
my $twit = Net::Twitter->new(traits=>['API::REST','OAuth'],username=>'書き込むtwitterID', password=>'書き込むIDのpassword',consumer_key=>'取得したconsumer code',consumer_secret=>'取得したconsumer code');
$twit->access_token('取得したaccess token code');
$twit->access_token_secret('取得したaccess token secret code');
my $text = 'てすと';
$text = decode( 'shiftjis', $text);
my $result = $twit->update($text);
exit;
---------------------------------------

参考ページ:

Category:Perl・Javascript・python、サーバー管理メモ



コメント

いいっすね!=3
001 [10.01 02:52] :ふぇちゅいんさんの英語力は「微妙」ではなく「最悪」という表現が適切かと。
002 [10.01 14:39]匿名さん:こういうログを公表するのは重要です。GJ!。あと、実際に使用する場合のコンシューマーコードはいらない? (1)
003 [10.01 15:13] @INFOWEB:最悪とか言っちゃ可哀相だろ。せめて「残念」とかにしようぜ。 (1)
004 [10.01 15:22]メール:文法に間違いがあるけど、決して失礼なことは言ってないし、技術者同士として意思疎通は出来ているでしょうから決して悪くはないでしょう。 (1)
005 [10.01 18:37]:oauthはtwitterclientにパスワードを教える必要が無いのです。あとからそのclientだけ認証解除することもできるし。
006 [10.07 02:54]ネブカド@DION:こういうページ助かります〜なんかNet::Twitterのバージョンのせいか(ver.3.07002)step2で
007 [10.11 10:40]funa:参考になりました。一生懸命 Code.pm を書き換えていました。個人で使うのになんか登録するの面倒っすね!

名前 ↑B

コメント(※改行は省略されます)

※3回以上の連続書き込み不可
この記事のアクセス数:


→カテゴリー:Perl・Javascript・python、サーバー管理メモ(記事数:83)
アクセス数の多い記事(過去1ヶ月)

すべて見る