Google OAuth2.0のリフレッシュトークンには有効期限がない。
どの認証フローであってもリフレッシュトークンを取得できればアクセストークンを取得できる。
参考: Using OAuth 2.0 to Access Google APIs
デバイス認証フローでトークンを取得する。
コンソールで認証フローを開始する
verification_url
とuser_code
を取得する。
ブラウザでverification_url
にアクセスする。
許可リクエストを承認してuser_code
を入力する。
コンソールでdevice_code
を指定してトークンを取得する。
$client_id = ""
$client_secret = ""
$scope = ""
$data = Invoke-RestMethod `
-Uri 'https://accounts.google.com/o/oauth2/device/code' `
-Method Post `
-ContentType "application/x-www-form-urlencoded" `
-Body @{
client_id=$client_id;
scope=$scope
}
$data.user_code
# ブラウザを起動
start $data.verification_url
do
{
Read-Host '?'
$result = Invoke-RestMethod `
-Uri "https://accounts.google.com/o/oauth2/token" `
-Method Post `
-ContentType "application/x-www-form-urlencoded" `
-Body @{
client_id = $client_id;
client_secret = $client_secret ;
code=$data.device_code;
grant_type='http://oauth.net/grant_type/device/1.0';
}
$result
} while($result.error)
# 結果
$result.access_token
$result.refresh_token
$result.expires_in
$result.token_type
$result