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;
}