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}
,
);
# redirect user to authorize page.
sub
start_authorize {
my
$your_app
=
shift
;
my
$redirect_url
=
$client
->uri_to_redirect(
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
,
) 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
;
}
$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
-
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.
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.