Amon2-Auth
view release on metacpan or search on metacpan
lib/Amon2/Auth/Site/Facebook.pm view on Meta::CPAN
use strict;
use warnings;
use utf8;
package Amon2::Auth::Site::Facebook;
use Mouse;
use LWP::UserAgent;
use URI;
use JSON;
use Amon2::Auth;
sub moniker { 'facebook' }
for (qw(client_id scope client_secret)) {
has $_ => (
is => 'ro',
isa => 'Str',
required => 1,
);
}
has user_info => (
is => 'rw',
isa => 'Bool',
default => 1,
);
has fields => (
is => 'rw',
isa => 'Str',
default => 'id,name',
);
has ua => (
is => 'ro',
isa => 'LWP::UserAgent',
lazy => 1,
default => sub {
my $ua = LWP::UserAgent->new(agent => "Amon2::Auth/$Amon2::Auth::VERSION");
},
);
sub auth_uri {
my ($self, $c, $callback_uri) = @_;
$callback_uri or die "Missing mandatory parameter: callback_uri";
my $url = URI->new('https://www.facebook.com/dialog/oauth');
my %params;
for (qw(client_id scope)) {
$params{$_} = $self->$_;
}
$params{redirect_uri} = $callback_uri;
$url->query_form(%params);
return $url->as_string;
}
sub callback {
my ($self, $c, $callback) = @_;
if (my $error_description = $c->req->param('error_description')) {
return $callback->{on_error}->($error_description);
}
my $uri = URI->new('https://graph.facebook.com/oauth/access_token');
( run in 0.682 second using v1.01-cache-2.11-cpan-39bf76dae61 )