GASでBearer認証API
GAS実践で認証付きAPIを呼び出す
Google Apps Script(GAS)を使って外部APIにアクセスする際、認証付きAPIを呼び出す手順は必須です。まずはOAuth2ライブラリを導入し、アクセストークンを取得します。取得したトークンは後続のリクエストでAuthorizationヘッダーに設定します。
OAuth2のフローは、認証サーバーにリダイレクトし、ユーザーが許可すると発行されるコードを受け取り、アクセストークンに交換します。GASでは、UrlFetchApp.fetchを使ってトークン取得エンドポイントへPOSTリクエストを送ります。
var tokenUrl = 'https://example.com/oauth/token';
var payload = {
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
grant_type: 'client_credentials'
};
var options = {
method: 'post',
payload: payload,
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(tokenUrl, options);
var token = JSON.parse(response.getContentText()).access_token;
取得したtokenを使って、認証付きAPIにアクセスします。ここではBearer TokenをAuthorizationヘッダーに設定し、APIキーを併用するケースも紹介します。
headersとAuthorizationヘッダーの構築
API呼び出し時に必要なheadersは、Content-Type、Accept、Authorizationなどです。Authorizationヘッダーは「Bearer headersオブジェクトを作成し、UrlFetchApp.fetchに渡します。
var apiUrl = 'https://api.example.com/data';
var headers = {
'Authorization': 'Bearer ' + token,
'Accept': 'application/json',
'Content-Type': 'application/json'
};
var apiOptions = {
method: 'get',
headers: headers,
muteHttpExceptions: true
};
var apiResponse = UrlFetchApp.fetch(apiUrl, apiOptions);
var data = JSON.parse(apiResponse.getContentText());
APIキーを別途ヘッダーに含める場合は、X-API-Keyなどのカスタムヘッダーを追加します。これにより、OAuth2とAPIキーの二重認証が可能になります。
認証ヘッダーを正しく構築することで、API側の認可チェックをスムーズに通過できます。ヘッダーの順序やスペースに注意し、文字列の結合ミスを防ぎましょう。
ペイロードとオプションで柔軟にリクエストを送る
POSTやPUTリクエストでは、ペイロード(リクエストボディ)を送る必要があります。GASでは、payloadプロパティにJSON文字列を設定し、Content-Typeをapplication/jsonにします。
var payloadData = {
name: 'Sample',
value: 42
};
var options = {
method: 'post',
headers: headers,
payload: JSON.stringify(payloadData),
muteHttpExceptions: true
};
var result = UrlFetchApp.fetch(apiUrl, options);
var resultData = JSON.parse(result.getContentText());
オプションとして、タイムアウト設定やリダイレクト制御、キャッシュ無効化などを指定できます。muteHttpExceptionsをtrueにすると、HTTPエラー時でも例外が発生せず、レスポンスを取得できます。
さらに、クエリパラメータを付与したい場合は、URLに直接追加するか、paramsオブジェクトを使用します。GASのUrlFetchAppはparamsを自動でエンコードしてくれるので、手動でクエリ文字列を作る手間が省けます。
コメント
コメントを投稿