Amon2-Auth-Site-Hatena
view release on metacpan or search on metacpan
eg/app.psgi view on Meta::CPAN
#!perl
# usage:
# $ HATENA_CONSUMER_KEY=... HATENA_CONSUMER_SECRET=... plackup eg/app.psgi
use strict;
use warnings;
use utf8;
use File::Spec;
use File::Basename;
use lib File::Spec->catdir(dirname(__FILE__), '../lib');
use Amon2::Lite;
use Plack::Builder;
sub config {
+{
Auth => {
Hatena => {
consumer_key => $ENV{HATENA_CONSUMER_KEY},
consumer_secret => $ENV{HATENA_CONSUMER_SECRET},
}
}
}
}
get '/' => sub {
my $c = shift;
my $auth = $c->session->get('auth_hatena') || {};
$c->render('index.tt', { user => $auth->{user} });
};
get '/logout' => sub {
my ($c) = @_;
$c->session->expire;
$c->redirect('/');
};
__PACKAGE__->load_plugin('Web::Auth', {
module => 'Hatena',
on_error => sub {
my ($c, $error_message) = @_;
die $error_message;
},
on_finished => sub {
my ($c, $token, $token_secret, $user) = @_;
$c->session->set(auth_hatena => {
user => $user,
token => $token,
token_secret => $token_secret,
});
$c->redirect('/');
},
});
builder {
enable 'Plack::Middleware::Session';
__PACKAGE__->to_app;
};
__DATA__
@@ index.tt
<!doctype html>
<html>
( run in 1.857 second using v1.01-cache-2.11-cpan-5735350b133 )