今日も Perl から Google Drive API v3 をやっていきます。
リフレッシュトークンを使ってアクセストークンを更新する
Google の発行したアクセストークンは 3600 秒、つまり 1 時間で失効します。
失効する都度、アクセストークンを発行しても良いのですが(うちもそうしてた)、さすがに面倒・・・になってきました。
そこで、アクセストークンと一緒に発行されるリフレッシュトークンを利用してアクセストークンを更新します。
その際には以下のものが必要です。
それらを POST で Google のAPI になげると、新しいアクセストークンが返ってきます。
これでまだ戦えますね!
注: ACCESS_TOKEN なくても更新できたので、コード更新しております
#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use HTTP::Tiny; use JSON; use URI; my $CLIENT_ID = ""; my $CLIENT_SECRET = ""; my $REFRESH_TOKEN = ""; my $URI = URI->new('https://oauth2.googleapis.com/token'); my $ht = HTTP::Tiny->new(); my $response = $ht->request( 'POST', $URI, { content => encode_json( { client_id => $CLIENT_ID, client_secret => $CLIENT_SECRET, grant_type => 'refresh_token', refresh_token => $REFRESH_TOKEN, } ) } ); my $json = decode_json($response->{content}); print Dumper $json; # "access_token": "hogehogefoofoobarbar", # "expires_in": 3599, # "scope": "https://www.googleapis.com/auth/drive", # "token_type": "Bearer"