NAME Catalyst::Authentication::Credential::Twitter - Twitter authentication for Catalyst SYNOPSIS In MyApp.pm use Catalyst qw/ Authentication Session Session::Store::FastMmap Session::State::Cookie /; MyApp->config( "Plugin::Authentication" => { default_realm => "twitter", realms => { twitter => { credential => { class => "Twitter", }, consumer_key => 'twitter-consumer_key-here', consumer_secret => 'twitter-secret-here', callback_url => 'http://mysite.com/callback', # you can bypass the above by including # "twitter_consumer_key", "twitter_consumer_secret", # and "twitter_callback_url" in your Catalyst site # configuration or yml file }, }, }, ); And then in your Controller: sub login : Local { my ($self, $c) = @_; my $realm = $c->get_auth_realm('twitter'); $c->res->redirect( $realm->credential->authenticate_twitter_url($c) ); } And finally the callback you specified in your API key request above (e.g. example.com/twitter/callback/ ): sub callback : Local { my ($self, $c) = @_; if (my $user = $c->authenticate(undef,'twitter')) { # user has an account - redirect or do something cool $c->res->redirect("/super/secret/member/area"); } else { # user doesn't have an account - either detect Twitter # credentials and create one, or return an error. # # Note that "request_token" and "request_token_secret" # are stored in $c->user_session as hashref variables under # the same names } } DESCRIPTION This module handles Twitter API authentication in a Catalyst application. METHODS As per guidelines of Catalyst::Plugin::Authentication, there are two mandatory methods, "new" and "authenticate". Since this is not really enough for the Twitter API, I've added one more. new() Will not be called by you directly, but will use the configuration you provide (see above). Mandatory parameters are "consumer_key", "consumer_secret" and "callback_url". Note that you can also include "twitter_consumer_key", "twitter_consumer_secret", and "twitter_callback_url" as variables in your Catalyst site configuration or yml file and you don't need to pass configuration parameters in your MyApp.pm file. Please see Net::Twitter for more details on them. authenticate_twitter_url( $c ) This method will return the authentication URL. Bounce your users there before calling the "authentication" method. authenticate( ) Handles the authentication. Nothing more, nothing less. It returns a Catalyst::Authentication::User::Hash with the following keys (all coming straight from Twitter). twitter_user twitter_user_id twitter_access_token twitter_access_token_secret Your database must at least contain a column called "twitter_user_id" in your main user table. If the other keys are present they will be updated on login with Twitter's most up-to-date information for that user. AUTHOR Jesse Stay COPYRIGHT This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this module. SEE ALSO Catalyst::Plugin::Authentication, Net::Twitter BUGS "Bugs? Impossible!". Please report bugs to THANKS Thanks go out Daisuke Murase for writing C::P::A::Credential::Flickr, Marc Mims and Chris Thompson for Net::Twitter.