LANG SELRCT

コードを書く場所

2019年7月17日水曜日

freee APIでリフレッシュトークンを使いたい


freee APIのアクセストークンの有効期間は24時間です。
有効期間をすぎるとそのアクセストークンは使えなくなります。

リフレッシュトークンでアクセストークンを更新することで、継続して利用することができるので、その更新手順を書いていきます。

以下2つのSTEPで書いていきます。

  1. リフレッシュトークンを取得する
  2. リフレッシュトークンを使って更新する



STEP1 リフレッシュトークンを取得する


まずは、freee APIでアクセストークンを取得してみるでアクセストークンを取得すると、このような結果が返ってきます。

{
  "access_token":"アクセストークン",
  "token_type":"bearer",
  "expires_in":86400,
  "refresh_token":"リフレッシュトークン",
  "scope":"read write default_read",
  "created_at":作成日時
}

今回はこの中の「refresh_token」を使います。


STEP2 リフレッシュトークンを使って更新する


スクリプトエディタに以下のコード.gsを貼り付けて
client_id, client_secret, refresh_tokenをそれぞれ貼り付けて保存します。



コード.gs
var client_id = 'Client IDを貼り付けます';
var client_secret = 'Client Secretを貼り付けます';

var refresh_token = 'リフレッシュトークンを貼り付けます';

/************************************
手順
0. 事前にアクセストークン, リフレッシュトークンを取得しておく
1. 上部の1,2行目にアプリストアのClient ID, Client Secretを貼り付ける
2. 上部の3行目にアクセストークンと一緒に取得したrefresh_tokenを貼り付ける
3. refreshTokens()を実行する
4. 上部メニューの「表示」>「ログ」に更新されたトークン情報が表示される

↓以下のコードは触らなくてOK
************************************/

function refreshTokens() {// アクセストークンを更新してログに出す
  var response = runRefresh();
  Logger.log(response);
}


var token_url = 'https://accounts.secure.freee.co.jp/public_api/token';

function runRefresh() {// refresh_tokenを使って更新したトークン情報を返す
  var payload = {
    'grant_type': 'refresh_token',
    'client_id': client_id,
    'client_secret': client_secret,
    'refresh_token': refresh_token
  }
  
  var options = {
    'method': 'post',
    'contentType': 'application/x-www-form-urlencoded',
    'payload': payload
  }
  var response = UrlFetchApp.fetch(token_url, options);
  return response;
}




「実行」>「関数を実行」>「refreshTokens」で実行します。


実行後、「表示」>「ログ」を開きます


access_tokenとrefresh_tokenが更新されたログが出力されます。


補足


次回refreshTokens()を実行する時は、更新後のログに出力されたrefresh_tokenを使います。


古いrefresh_tokenを使うとこのようなエラーが出ます。


関連記事

freee APIでアクセストークンを取得してみる


参考

アクセストークンを取得する
https://app.secure.freee.co.jp/developers/tutorials/3