Google OAuth 2.0を実行するためにWindowsコマンドプロンプトからcurlを使用したいと思います。私の目標は、OAuthサーバーが実装する、 HTTPヘッダーなどを参照してください。
Windowsコマンドプロンプトからcurl.exeを使用してこれを行うにはどうすればよいですか?
Curl CLIを使用してOAuth 2.0を実行するには?
この回答はWindowsコマンドプロンプトユーザー向けですが、LinuxやMacにも簡単に適応できるはずです。
Googleが必要ですClient ID
およびClient Secret
。これらは、GoogleコンソールのAPIs & Services
-> Credentials
。
次の例では、スコープはcloud-platform
。テストするスコープを使用するように変更します。テストできるスコープは次のとおりです。
"https://www.googleapis.com/auth/cloud-platform"
"https://www.googleapis.com/auth/cloud-platform.read-only"
"https://www.googleapis.com/auth/devstorage.full_control"
"https://www.googleapis.com/auth/devstorage.read_write"
"https://www.googleapis.com/auth/devstorage.read_only"
"https://www.googleapis.com/auth/bigquery"
"https://www.googleapis.com/auth/datastore"
詳細:
Windowsバッチスクリプト:
set CLIENT_ID=Replace_with_your_Client_ID
set CLIENT_SECRET=Replace_with_your_Client_Secret
set SCOPE=https://www.googleapis.com/auth/cloud-platform
set ENDPOINT=https://accounts.google.com/o/oauth2/v2/auth
set URL="%ENDPOINT%?client_id=%CLIENT_ID%&response_type=code&scope=%SCOPE%&access_type=offline&redirect_uri=urn:ietf:wg:oauth:2.0:oob"
@REM start iexplore %URL%
@REM start Microsoft-Edge:%URL%
start chrome %URL%
set /p AUTH_CODE="Enter Code displayed in browser: "
curl ^
--data client_id=%CLIENT_ID% ^
--data client_secret=%CLIENT_SECRET% ^
--data code=%AUTH_CODE% ^
--data redirect_uri=urn:ietf:wg:oauth:2.0:oob ^
--data grant_type=authorization_code ^
https://www.googleapis.com/oauth2/v4/token
最終的な出力は次のようになります。
{
"access_token": "ya29.deleted_for_security_reasons",
"expires_in": 3600,
"refresh_token": "1/jk3/deleted_for_security_reasons",
"scope": "https://www.googleapis.com/auth/cloud-platform",
"token_type": "Bearer"
}
アクセストークンを使用したcurlコマンドの例:
set ACCESS_TOKEN=replace_with_your_access_token
set PROJECT=development-123456
set ZONE=us-west-1a
set INSTANCE_NAME=dev-system
@REM - This endpoint will start the instance named INSTANCE_NAME in ZONE
set ENDPOINT=https://www.googleapis.com/compute/v1/projects/%PROJECT%/zones/%ZONE%/instances/%INSTANCE_NAM%/start
curl -H "Authorization: Bearer %ACCESS_TOKEN" "%ENDPOINT%"
ヒント:アクセストークンをファイルに保存する
jq
を使用して出力を処理するように、バッチスクリプトの最後の行を変更します。
curl ^
--data client_id=%CLIENT_ID% ^
--data client_secret=%CLIENT_SECRET% ^
--data code=%AUTH_CODE% ^
--data redirect_uri=urn:ietf:wg:oauth:2.0:oob ^
--data grant_type=authorization_code ^
https://www.googleapis.com/oauth2/v4/token | jq -r ".access_token > token.save
set /p ACCESS_TOKEN=<token.save
echo %ACCESS_TOKEN%
最後の2行は、さらにスクリプトでさらに使用するためにファイルに保存されたアクセストークンを読み取る方法を示しています。
トークンは、デフォルト値である60分後に失効します。
これについて詳しく説明する記事をブログに書きました。