たぬの麻雀日記

なんだかいろいろと日々反省中。

  • Home
  • 紹介
Twitter Facebook RSS
Tag Archives: catalyst

catalystとOAuth::Liteでつぶやいてみる – perl

Posted on 2010年8月19日 by tanu
No Comments

CatalystとOAuth::LiteでNet::Twitter::Liteしてみるテスト。

ちなみになんで,perlかというと。。。。oauthするのになんとなく一番楽そうな気がしたから!(・д・`)

事前準備としてはhttp://dev.twitetr.com/appsでアプリケーションを登録して,コンシューマキーとコンシューマシークレットキーを取得する。

登録する際に,コールバックURLを決定(今回はhttp://yoursite.com/auth_callbackとした)して事前に「ブラウザアプリケーション」としておく。

ちなみに自分としてアクセスするだけならば,My AccessTokenからoauth_tokenとoauth_token_secretが取得できるので,コールバックは利用しなくてもおk。不特定多数のユーザに利用してもらう場合は,コールバックに渡ってくるので,あらかじめ受け取り場所として設定しておく必要がある。

image

image

Viewはroot.ttのみ,Modelはなし。ほぼControllerだけでやってます。Const::TOKENSに取得したconsumer keyとcumsumer secretがはいってます。

SampleApp/lib/SampleApp/Controller/Root.pmの修正。

sub index : Path :Args(0) {
my ( $self, $c ) = @_;

my $consumer = OAuth::Lite::Consumer->new(SampleApp::Const::TOKENS);
my $request_token = $consumer->get_request_token();
my $uri = URI->new($consumer->{authorize_path});

$uri->query($consumer->gen_auth_query("GET",$consumer->{site},$request_token));
$c->stash->{authquery} = $uri->as_string;

$c->stash->{template} = 'root.tt';
}

AuthCallback.pmの作成

tanu@owl:~/SampleApp$ script/sampleapp_create.pl controller AuthCallback
exists "/home/tanu/SampleApp/script/../lib/SampleApp/Controller"
exists "/home/tanu/SampleApp/script/../t"
created "/home/tanu/SampleApp/script/../lib/SampleApp/Controller/AuthCallback.pm"
created "/home/tanu/SampleApp/script/../t/controller_AuthCallback.t"

AuthCallback.pmの修正

渡ってきたTokenをこの例ではセッションに渡してるけど,実際はDBに入れたほうがいいかもしれない。


*OAuth::Lite::Util::encode_param = sub {
my $param = shift;
URI::Escape::uri_escape_utf8($param, '^\w.~-');
};

sub index :Regex('^auth_callback') :Args(0) {
my ( $self, $c ) = @_;
my $consumer = OAuth::Lite::Consumer->new(SampleApp::Const::TOKENS);

my $access_token = $consumer->get_access_token(
token    => $c->request->params->{oauth_token},
verifier => $c->request->params->{oauth_verifier}
);

my $twitter = Net::Twitter::Lite->new(SampleApp::Const::TOKENS);

$twitter->access_token($access_token->{token});
$twitter->access_token_secret($access_token->{secret});

$c->stash->{template}='root.tt';
$c->stash->{friends}=$twitter->friends();
$c->stash->{timeline}=$twitter->user_timeline();
$c->session->{token}=$access_token->{token};
$c->session->{secret}=$access_token->{secret};

$c->session->{name}=$user->{name};
}

Tweet.pmも作成。

sub index :Regex('^tweet') :Args(0) {
my ( $self, $c ) = @_;

$c->stash->{template} = 'root.tt';
$c->stash->{token} = $c->request->params->{token};
$c->stash->{secret} = $c->request->params->{secret};
my $tweet = $c->request->params->{tweet};
$c->stash->{tweet} = $tweet;

my $twitter = Net::Twitter::Lite->new(SampleApp::Const::TOKENS);
$twitter->access_token($c->session->{token});
$twitter->access_token_secret($c->session->{secret});

$c->stash->{timeline} = $twitter->user_timeline();
$twitter->update({'status'=>$tweet});

}

root.tt

<html>
<body>

[% IF c.session.token == '' %]
<a href='[% c.stash.authquery %]'>twitter認証</a>
[% ELSE %]

<form id='tweetform' action='tweet' method='post'>
<textarea cols="40" rows="2" id='tweet' name='tweet'></textarea>
<input type='submit' />
</form>
<p>last:[% c.stash.tweet %]</p>
[%FOREACH tweet=c.stash.timeline %]
<p>[% tweet.text %]</p>
[%END%]

[% END %]
</body>
</html>

これでとりあえずつぶやけた。

作ってみておもったんだけど,ユーザ名とかパスワードがほんとに一切出てこない。すげー。なんか違和感感じてしまうのはそういうアプリを作りなれてないからなんだろうな。。。

Categories: 未分類 | Tags: catalyst, Twitter

catalyst覚書 – perl

Posted on 2010年8月18日 by tanu
No Comments

めもめも。Catalyst::Runtimeのバージョンは5.80025。途中から書き始めたので,もしかしたらなんか欠けてる可能性もあり。

パッケージの作成


catalyst.pl SampleApp

モデル定義(sqliteの場合)

DB作成後,Model作成。DB作成は割愛。

script/sampleapp_create.pl model DB DBIC::Schema SampleApp::Schema create= static dbi:SQLite2:/home/aaa/SampleApp/db/aaa.db

セッション管理 とutf8とTT

以下のpluginを入れることで,$c->sessionが利用可能。少なくともFastMmapは入ってなかったと思われる。

Catalyst::Plugin::Session
Catalyst::Plugin::Session::State::Cookie
Catalyst::Plugin::Session::Store::FastMmap

utf8(BOFなし)はutf8::decodeしてあげないとtt側でエラーになるが,Catalyst::Plugin::Unicodeを導入することでこのプロセスが省ける。

以下をアプリケーション定義(この場合,SampleApp/lib/SampleApp.pm)に追加。

use Catalyst qw/
-Debug
ConfigLoader
Static::Simple
Session
Session::State::Cookie
Session::Store::FastMmap
Unicode
/;
__PACKAGE__->config(
name => 'SampleApp',
disable_component_resolution_regex_fallback => 1,
session=>{
expires=>1000,
storage =>'/tmp/session'
},
);

TTでeval_perlを有効化

script/sampleapp_create.pl View TT TT

SampleApp/lib/SampleApp/View/TT.pm にてEVAL_PERLを追加することで,テンプレートで[% PERL %]ブロックが有効になる。また,そのままだとUTF-8(BOFあり)の表示でエラーになってしまうので,ENCODINGも指定しておく。Unicodeプラグインいれてあればいらなさそう?(未検証)

__PACKAGE__->config(
TEMPLATE_EXTENSION => '.tt',
render_die => 1,
EVAL_PERL =>'true',
ENCODING    =>'utf-8',
);

ソース変更後自動で再起動 & ポートを指定して起動

script/sampleapp_server.pl --restart --port=8080

しかし,catalystのインストールって超長。。。。

Categories: 未分類 | Tags: catalyst
  • TagCroud

    天鳳 .NET bing c# catalyst flickr google GTD iphone irc linux Mac MT music mysql php pipes SecondLife seo Twitter ubuntu wordpress
  • 写真

    100円ショップでみつけたガチャピンスポンジ
    電車がこーなーいー
    噂のアンドロイドみてきた。すげー!
    もこもこ
  • ワッショイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワッショイ

  • Calendar

    2012年5月
    日 月 火 水 木 金 土
    « 4月    
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
  • 人気のある記事

    • 無料オンラインストレージ比較 – quanp vs dropbox vs sugarsync
    • osqleditでつながらないときにやったことメモ – oracle10g & windows7(xp-mode)
    • grubコンソールで止まりbootできない – CentOS 5.4 grub.conf
    • Visual Studioでsubversion – AnkhSVN
    • google アドレス帳 , iPhone, outlook, becky!間での連絡先共有 その2
  • Archives

  • Twitter

  • 携帯版

    たぬの麻雀日記
  • booklog

© たぬの麻雀日記. Proudly Powered by WordPress | Nest Theme by YChong
Posts webslice
Posts webslice
60
catalyst webslice
catalyst webslice
60