[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
http://shunshun94.web.fc2.com/util/OAuthUrl.html
タイトルまんま。ここ最近で何度か困ったので作った。
use strict;
use LWP::UserAgent;
use JSON::PP;
my $browser = LWP::UserAgent->new;
my $json = JSON::PP->new;
sub getAccessToken {
my $code = $_[0];
my $redirect_url = $_[1];
my $oauth_scope = $_[2];
my $oauth_client_id = $_[3];
my $oauth_secret_id = $_[4];
my $token_url = "https://accounts.google.com/o/oauth2/token";
my $token_request = HTTP::Request->new(POST => $token_url);
$token_request->content_type('application/x-www-form-urlencoded');
my $body = "redirect_uri=$oauth_redirect_url&scope=$oauth_scope&client_id=$oauth_client_id&client_secret=$oauth_secret_id&grant_type=authorization_code&code=$code";
$token_request->content($body);
my $token_response = $browser->request($token_request);
my @rawResult = decode_json $token_response->content;
my $token = $rawResult[0]->{'access_token'};
return $token;
}
print getAccessToken(
"nankanankaNankaRondomeNaCodeCode9877",
"http%3A%2F%2Fsheeprogramming.iku4.com%2F",
"https://www.googleapis.com/auth/userinfo.profile%20email",
"5348789543906-o86eefe6g7clf855htsefii06cin.apps.googleusercontent.com",
"ran51Random25"
);
こんな感じでアクセストークンが取得できた。今後なんか使いそうなのでメモ。
タイトルまんま。社内ツールで PDF に透かしを入れたかったので調べた。若干面倒だけど PDFBox が良かった。
ちょっとググってみると E-ICEBLUE さんとか出てくる。かなり使いやすい。有料版は普通に使えると思う。有料版の体験版は1ページ目の一番上に「体験版だよー」って文字が入る。無料版もあるがこちら、10ぺージまでしか PDF 出力ができない。ページ数が少ないって分かっているなら選択肢かも。有料体験版のライセンスは確認していないけど無料版は商用利用可能らしい。有料版のお値段はこちら。
iText さんもよいらしい。AGPL ライセンスの元、無料版もある(事実上、商用利用は有料)。
PDFBox は Apache ライセンスなので安心。
ただ、社内ツールだったので今考えたら AGPL の iText さんのものでよかったのでは……
ゆとシート2のログインに Discord のアカウントでのログインを追加したいので、現状のログイン周りの機能についてまとめた。1.06.1 をベースにしている(1.06.1 のソースコード)。
以下の手順で動く。ユーザは新規登録を済ませているものとする
index.cgiに mode=login のパラメータを URL 経由で渡すとログインページに飛ぶ(ソースコード)。
なお、mode=login でも id も添えてある場合はログインそのものの処理に飛ぶ(ソースコード)。
ログインページは form.html に html がある。パラメータに応じて出力される html が違うので注意。
form で情報を送信し、mode (login で固定)、id そして password を引数として post する。
本丸。index.cgi で mode=login であることと id があることを確認したらログイン処理に入る。 ログイン処理はsubroutine.plに記載されている。
log_in は $_[0] に id を、$_[1] にパスワードを取っている。
まず、key_get を呼び出し ID・パスワードの妥当性を検証し(ソースコード)、
妥当ならば key (セッショントークンの役割を果たす) を発行している(ソースコード)。
然る後にセッショントークンを実際に使う形にして内部で保存(ソースコード)、
ブラウザに返却する Cookie に準備する(ソースコード / こちらも)。
セッショントークンは [ユーザ名]<>[KEY] の形をとる。例えばユーザ名が Shunshun94 ならば Shunshun94<>EtlPXgjAOJTW や Shunshun94<>owRCPLfzkDP7といった値となる。実際にユーザに渡されたり内部で保存されたりするのはこの形である。
しかる後に結果をブラウザに返却する。
上述の機能追加に関連する既存の機能について。
$user_reqdを1にすればよい。
管理ユーザは$masteridで設定する。多分設定が難しくなるので注意。
https://github.com/Shunshun94/firstReplAIBot タイトルまんま。単体で jar を叩いてもすぐ使える。maven のリポジトリとかには登録してないけどどうしようかなぁって。今年はそういう所に自分の作ったもの出してみたいなぁ。