package Catalyst::Plugin::Facebook; use strict; use warnings; use WWW::Facebook::API; our $VERSION = '0.1'; # why not *fb = \&facebook; sub facebook { my ($c) = @_; if (! $c->{'facebook'}) { $c->{'facebook'} = WWW::Facebook::API->new( 'desktop' => 0, 'format' => 'JSON', 'parse' => 1, %{ $c->config->{'facebook'} || { } }, ); $c->{'facebook'}->query( $c->request); my $params = $c->facebook->canvas->get_fb_params; $c->{'facebook'}->session('uid' => $params->{'user'}, 'key' => $params->{'session_key'}, 'expires' => $params->{'expires'}); } return $c->{'facebook'}; } 1; __END__ =pod =head1 NAME Catalyst::Plugin::Facebook - Build Facebook applications in Catalyst easier =head1 SYNOPSIS This module adds quick and easy access to WWW::Facebook::API within a Catalyst application. use Catalyst qw/Facebook/; __PACKAGE__->config( 'facebook' => { 'api_key' => 'api_key_xyz', 'secret' => '12345ddd', } ); sub auto : Private { my ( $self, $c ) = @_; if (! $self->can_display($c)) { return; } return 1; } sub can_display { my ($self, $c) = @_; if (! $c->facebook->canvas->in_fb_canvas()) { $c->res->redirect('http://apps.facebook.com/iplaywow/'); return 0; } if (! $c->facebook->canvas->get_fb_params->{'added'} ) { $c->res->redirect($c->facebook->get_add_url()); return 0; } my $user = $c->facebook->canvas->get_fb_params->{'user'}; if (! $user) { $c->res->redirect($c->facebook->get_login_url()); return 0; } return 1; } =head1 CONFIGURATION This package uses the 'facebook' configuration namespace. See the WWW::Facebook::API module for all of the configuration options available. The two required configuration options are 'api_key' and 'secret'. =head1 EXPORT This package exports the facebook method. The facebook method returns a full WWW::Facebook::API object. =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc Catalyst::Plugin::Facebook You can also look for information at: =over 4 =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * RT: CPAN's request tracker L =item * Search CPAN L =back =head1 COPYRIGHT & LICENSE Copyright 2007 Nick Gerakines, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut