Add extra_params facility
[catagits/Catalyst-Authentication-Credential-OAuth.git] / lib / Catalyst / Authentication / Credential / OAuth.pm
index ba846e3..4e04add 100644 (file)
@@ -41,7 +41,7 @@ sub authenticate {
 
     my $provider = $self->providers->{ $auth_info->{provider} };
 
-    for ( qw/ consumer_key consumer_secret request_token_endpoint access_token_endpoint user_auth_endpoint / ) {
+    for ( qw/ consumer_key consumer_secret request_token_endpoint access_token_endpoint user_auth_endpoint extra_params / ) {
         Catalyst::Exception->throw( $_ . " is not defined for provider ". $auth_info->{provider} )
             unless $provider->{$_};
     }
@@ -54,7 +54,11 @@ sub authenticate {
         request_method => 'GET',
         signature_method => 'HMAC-SHA1',
        oauth_version => '1.0a',
-        callback => $c->uri_for( $c->action, $c->req->captures, @{ $c->req->args } )->as_string
+        callback => $c->uri_for( $c->action, $c->req->captures, @{ $c->req->args } )->as_string,
+        ( defined $provider->{extra_params}
+          ? ( extra_params => $provider->{extra_params} )
+          : ()
+        ),
     );
 
        $c->log_debug( "authenticate() called from " . $c->request->uri ) if $self->debug;
@@ -65,7 +69,7 @@ sub authenticate {
 
        if( $oauth_token ) {
 
-               my $response = Net::OAuth->response( 'user auth' )->from_hash( $c->req->params );
+               my $response = Net::OAuth->response( 'user auth' )->from_hash( { %{$c->req->params}, %{$provider->{extra_params}} } );
 
                my $request = Net::OAuth->request( 'access token' )->new(
                        %defaults,