Amon2::Auth::Site::LINE - LINE integration for Amon2
# in your configuration file
+{
Auth => {
LINE => {
client_id => '123456789Z',,
client_secret => '01234567889abcdef0123456789abcdx',
scope => [qw(profile)],
}
}
}
# in your web app
__PACKAGE__->load_plugin('Web::Auth', {
module => 'LINE',
on_finished => sub {
my($c, $token, $api_response) = @_;
my $user_id = $api_response->{userId};
my $name = $api_response->{displayName};
$c->session->set(user_id => $user_id);
$c->session->set(name => $name);
return $c->redirect('/');
},
on_error => sub {
my($c, $error_message) = @_;
...
}
});
This is a LINE Login authentication module for Amon2. It uses LINE Login v2.1 APIs.
Following attributes are set in your configuration file such like config/production.pl
and so on.
-
client_id
Mandatory. It is issued on LINE Developers Console.
-
client_secret
Mandatory. It is issued on LINE Developers Console.
-
redirect_uri
Optional. It's used for some API's
redirect_uri
parameter. If it's ommited,callback_path
which is passed as an attribute for argument is used instead of it. -
state
Optional. If you don't set nothing, it generates a random string. The
state
parameter is used a system for preventing CSRF on OAuth 2.0. This attribute should not be set some foreseeable fixed value. -
scope
API scope as an array-ref. Acceptable values are:
profile
,openid
andemail
. See detail: https://developers.line.biz/en/docs/line-login/integrate-line-login/#scope Default value is['profile']
. -
nonce
Optional. If you don't set nothing, it generates a random string. The
nonce
parameter is used a system for preventing replay attack / token interception attack on OpenID Connect. This attribute should not be set some foreseeable fixed value. -
prompt
Optional.
consent
is acceptable. -
max_age
Optional. Specified on OpenID Conjnect Core 1.0.
-
ui_locales
Optional. Specified on OpenID Conjnect Core 1.0.
-
bot_prompt
Optional.
normal
andaggressive
are acceptable. -
state_session_key
Optional.
state
parameter is kept on session with this specified session key during authentication. Default valuesline_login_state
. -
nonce_session_key
Optional.
nonce
parameter is kept on session with this specified session key during. Default valuesline_login_nonce
.
-
authenticate_path
Optional. Default value is
/auth/line/authenticate
. The path works for "login link". -
callback_path
Optional. Default value is
/auth/line/callback
. -
on_finished
Mandatory. The details are described following.
-
on_error
Optional. The details are described following.
-
user_info
Optional. If it's true, this module fetches the user information after authentication.
-
$auth->auth_uri($c:Amon2::Web, $callback_uri : Str) :Str
Get a authenticate URI.
-
$auth->callback($c:Amon2::Web, $callback:HashRef) : Plack::Response
Process the authentication callback dispatching.
$callback
MUST have two keys.-
on_error
on_error callback function is called when an error occurs.
The arguments are following:
sub { my ($c, $error_message) = @_; ... }
-
on_finished
on_finished callback function is called if an authentication was finished.ck function is called After successful authentication.
The arguments are following:
sub { my ($c, $access_token, $api_response) = @_; ... }
$api_response
contains an issued access token, a verified access token validity, and a gotten user profile. And they are all merged into one hash-ref. This code contains a information like https://developers.line.biz/en/reference/line-login/#issue-token-response, https://developers.line.biz/en/reference/line-login/#verify-access-token-response and https://developers.line.biz/en/reference/line-login/#get-profile-response. If you set$auth->user_info
as a false value and/or you don't setprofile
as thescope
attribute, authentication engine does not pass a gotten user profile.
-
Koichi Taniguchi (a.k.a. nipotan) [email protected]
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
-
LINE Login v2.1 API Reference
-
Amon2::Plugin::Web::Auth