2009/10/01
■PerlによるWebコンテンツからTwitterに投稿して「from ×××」と表示する方法【Perlメモ(13)】
※下記記事は勘違いがありました、勘違い部分に関してここにメモ | 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; ---------------------------------------
参考ページ:
■ ■ ■ コメント ■ ■ ■
001 [10/01 02:52] :ふぇちゅいんさんの英語力は「微妙」ではなく「最悪」という表現が適切かと。 002 [10/01 14:39]匿名さん:こういうログを公表するのは重要です。GJ!。あと、実際に使用する場合のコンシューマーコードはいらない? 003 [10/01 15:13] @INFOWEB:最悪とか言っちゃ可哀相だろ。せめて「残念」とかにしようぜ。 004 [10/01 15:22]メール:文法に間違いがあるけど、決して失礼なことは言ってないし、技術者同士として意思疎通は出来ているでしょうから決して悪くはないでしょう。 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 を書き換えていました。個人で使うのになんか登録するの面倒っすね!
■トラックバック■
この記事の総アクセス数(最後の書き込みまで):601
→本日の記事一覧に戻る
→Perlメモのカテゴリーに関する別の記事 (コメント数) 2009/09/06Perlでよく使用する関数・標準モジュール(サンプル付き) 2009/08/03ActivePerlのPPMを認証付きproxyの内側で動かす(2)
|
|