GoogleのOAuth2を利用したAPIを使う
GoogleのOAuth2利用のAPIを使用するまでの流れは以下の通りです。
- APIを有効化する
- OAuth2を取得する
- APIを使用する
※OAuth2認証が必要なGoogleAPIを使用する場合、だいたい同じ流れになります。
APIを有効化する
- Get started with REST | Google Photos APIs | Google Developers
- 上記ページの説明に従ってAPIを有効化する
- <クライアントID>をメモしておく
- 例:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
- 例:
- <シークレットID>をメモしておく
- 例:
xxxxxxxxxxxxxxxxxxxxxxxx
- 例:
- <クライアントID>をメモしておく
- 上記ページの説明に従ってAPIを有効化する
- Google API Console API Library
- 他のGoogleAPIsと同様に設定する
- 上記どちらかの方法で<クライアントID>と<シークレットID>を取得する
OAuth2を取得する
- GoogleAPIsでAPIのOAuth2に<リダイレクトURI>を設定する
- Google API Console API Library
- 上記ページで<リダイレクトURI>を設定する
- 例:
https://www.bugbugnow.net/
- 自身のWebページ等を設定する
- 例:
- 以下のアドレスにWebブラウザからアクセスして承認する
https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=<クライアントID>&redirect_uri=<リダイレクトURI>&scope=https://www.googleapis.com/auth/photoslibrary&access_type=offline
- <クライアントID>と<リダイレクトURI>をメモした値に置き換える
- ※scopeを変更することで別のAPIにも流量できます
- リダイレクト先のURLをメモする
- URL内の<コード>をメモする
- 例:
4/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 例:
- URL内の<コード>をメモする
- curlコマンドを使用して<アクセストークン>と<リフレッシュトークン>を取得する
curl -s --data "code=<コード>" --data "client_id=<クライアントID>" --data "client_secret=<シークレットID>" --data "redirect_uri=<リダイレクトURI>" --data "grant_type=authorization_code" --data "access_type=offline" https://www.googleapis.com/oauth2/v4/token
- <コード>、<クライアントID>、<シークレットID>、<リダイレクトURI>をメモした値に置き換える
- 取得した<リフレッシュトークン>をメモする。
- 例:
1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 例:
APIを使用する
以下がGoogleAppsScriptでAPIを使用してアルバムタブ一覧を取得するサンプルコードです。
test.gsfunction photos() {
var url = 'https://photoslibrary.googleapis.com/v1/albums';
var options = {
method:"GET",
contentType:"application/json",
headers:{
Authorization:"Bearer "+fetchAccessToken().access_token,
}
};
var res = UrlFetchApp.fetch(url, options);
// ログに取得データを出力
Logger.log(res.getContentText('UTF-8'));
}
// アクセストークンの取得
function fetchAccessToken(client_id, client_secret, redirect_uri, refresh_token) {
var client_id = '<クライアントID>';
var client_secret = '<シークレットID>';
var redirect_uri = '<リダイレクトURI>';
var refresh_token = '<リフレッシュトークン>';
var url = "https://www.googleapis.com/oauth2/v4/token";
var options = {
method: "POST",
payload: {
refresh_token: refresh_token,
client_id: client_id,
client_secret: client_secret,
redirect_uri: redirect_uri,
grant_type: "refresh_token"
},
muteHttpExceptions : true
};
var res = UrlFetchApp.fetch(url, options);
return JSON.parse(res.getContentText());
// fetchAccessToken().access_token;
}