The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

OAuth::Lite2::Server::Endpoint::Token - token endpoint PSGI application

SYNOPSIS

token_endpoint.psgi

use strict;
use warnings;
use Plack::Builder;
use OAuth::Lite2::Server::Endpoint::Token;
use MyDataHandlerClass;

builder {
    my $app = OAuth::Lite2::Server::Endpoint::Token->new(
        data_handler => 'MyDataHandlerClass',
    );
    $app->support_grant_types(qw(authorization_code refresh_token));
    $app;
};

DESCRIPTION

The object of this class behaves as PSGI application (subroutine reference). This is for OAuth 2.0 token-endpoint.

At first you have to make your custom class inheriting OAuth::Lite2::Server::DataHandler, and setup PSGI file with it.

METHODS

new( %params )

data_handler

name of your custom class that inherits OAuth::Lite2::Server::DataHandler and implements interface.

error_uri

Optional. URI that represents error description page. This would be included in error responses.

support_grant_type( $type )

You can set 'authorization_code', 'password', 'client_credentials' or 'refresh_token'

support_grant_types( @types )

You can set 'authorization_code', 'password', 'client_credentials' or 'refresh_token'

data_handler

return your custom datahandler class

psgi_app

return psgi application

compile_psgi_app

compile psgi application

handle_request( $req )

parse access token request and call grant handler's method

TEST

You can test with OAuth::Lite2::Agent::PSGIMock and some of client classes.

my $app = OAuth::Lite2::Server::Endpoint::Token->new(
    data_handler => 'MyDataHandlerClass',
);
$app->support_grant_types(qw(authorization_code refresh_token));
my $mock_agent = OAuth::Lite2::Agent::PSGIMock->new(app => $app);
my $client = OAuth::Lite2::Client::UsernameAndPassword->new(
    id     => q{my_client_id},
    secret => q{my_client_secret},
    agent  => $mock_agent,
);
my $token = $client->get_access_token(
    username => q{foo},
    password => q{bar},
);
ok($token);
is($token->access_token, q{access_token_value});

AUTHOR

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.