Provided by: liboauth-lite2-perl_0.11-2_all bug

NAME

       OAuth::Lite2::Client::WebServer - OAuth 2.0 Web Server Profile Client

SYNOPSIS

           my $client = OAuth::Lite2::Client::WebServer->new(
               id               => q{my_client_id},
               secret           => q{my_client_secret},
               authorize_uri    => q{http://example.org/authorize},
               access_token_uri => q{http://example.org/token},
           );

           # redirect user to authorize page.
           sub start_authorize {
               my $your_app = shift;
               my $redirect_url = $client->uri_to_redirect(
                   redirect_uri => q{http://yourapp/callback},
                   scope        => q{photo},
                   state        => q{optional_state},
               );

               $your_app->res->redirect( $redirect_url );
           }

           # this method corresponds to the url 'http://yourapp/callback'
           sub callback {
               my $your_app = shift;

               my $code = $your_app->request->param("code");

               my $access_token = $client->get_access_token(
                   code         => $code,
                   redirect_uri => q{http://yourapp/callback},
               ) or return $your_app->error( $client->errstr );

               $your_app->store->save( access_token  => $access_token->access_token  );
               $your_app->store->save( expires_at    => time() + $access_token->expires_in    );
               $your_app->store->save( refresh_token => $access_token->refresh_token );
           }

           sub refresh_access_token {
               my $your_app = shift;

               my $access_token = $client->refresh_access_token(
                   refresh_token => $refresh_token,
               ) or return $your_app->error( $client->errstr );

               $your_app->store->save( access_token  => $access_token->access_token  );
               $your_app->store->save( expires_at    => time() + $access_token->expires_in    );
               $your_app->store->save( refresh_token => $access_token->refresh_token );
           }

           sub access_to_protected_resource {
               my $your_app = shift;

               my $access_token  = $your_app->store->get("access_token");
               my $expires_at    = $your_app->store->get("expires_at");
               my $refresh_token = $your_app->store->get("refresh_token");

               unless ($access_token) {
                   $your_app->start_authorize();
                   return;
               }

               if ($expires_at < time()) {
                   $your_app->refresh_access_token();
                   return;
               }

               my $req = HTTP::Request->new( GET => q{http://example.org/photo} );
               $req->header( Authorization => sprintf(q{OAuth %s}, $access_token) );
               my $agent = LWP::UserAgent->new;
               my $res = $agent->request($req);
               ...
           }

DESCRIPTION

       Client library for OAuth 2.0 Web Server Profile.

METHODS

   new( %params )
       id  Client ID

       secret
           Client secret

       authorize_uri
           authorization page uri on auth-server.

       access_token_uri
           token endpoint uri on auth-server.

       refresh_token_uri
           refresh-token endpoint uri on auth-server.  if you omit this, access_token_uri is used
           instead.

       agent
           user agent. if you omit this, LWP::UserAgent's object is set by default.  You can use
           your custom agent or preset-agents.

           See also

           OAuth::Lite2::Agent::Dump OAuth::Lite2::Agent::Strict OAuth::Lite2::Agent::PSGIMock

   uri_to_redirect( %params )
   get_access_token( %params )
       execute verification, and returns OAuth::Lite2::Client::Token object.

       code
           Authorization-code that is issued beforehand by server

       redirect_uri
           The URL that has used for user authorization's callback

   refresh_access_token( %params )
       Refresh access token by refresh_token, returns OAuth::Lite2::Client::Token object.

       refresh_token

   get_server_state
       Obtain OAuth::Lite2::Client::ServerState object.

   last_request
       Returns a HTTP::Request object that is used when you obtain or refresh access token last
       time internally.

   last_request
       Returns a HTTP::Response object that is used when you obtain or refresh access token last
       time internally.

AUTHOR

       Ryo Ito, <ritou.06@gmail.com>

       Lyo Kato, <lyo.kato@gmail.com>

COPYRIGHT AND LICENSE

       Copyright (C) 2010 by Lyo Kato

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of
       Perl 5 you may have available.