---
name: "OAuth::Lite2::Client::WebServer"
section: "3pm"
platform: "linux"
package: "liboauth-lite2-perl"
version: "0.11-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/OAuth::Lite2::Client::WebServer"
---

# OAuth::Lite2::Client::WebServer(3pm)

OAuth 2.0 Web Server Profile Client

## 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.
