Catalyst-Plugin-Facebook

 view release on metacpan or  search on metacpan

lib/Catalyst/Plugin/Facebook.pm  view on Meta::CPAN

package Catalyst::Plugin::Facebook;
our $VERSION = '0.2';


use strict;
use warnings;

use WWW::Facebook::API;

use Scalar::Util qw();

# why not
*fb = \&facebook;

sub facebook {
    my ($c) = @_;
    unless ( $c->{'facebook'} and Scalar::Util::blessed($c->{'facebook'}) and $c->{'facebook'}->isa('WWW::Facebook::API') ) {
        $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;



=pod

=head1 VERSION

version 0.2

=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) {



( run in 0.441 second using v1.01-cache-2.11-cpan-e1769b4cff6 )