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 )