pythonでfreeeAPIを利用する〜refresh_tokenを利用してaccess_tokenを更新する〜

API関連

やりたいこと

freeeAPIを利用するために、AccessTokenを取得することが必要ですが、このAccessTokenはセキュリティの観点から有効期限が設定されています。

そのため、AccessTokenの有効期限がきれた場合、AccessToken取得時に一緒に発行されるRefreshTokenを利用してAccessTokenを再度AccessTokenを取得する必要があります。

今回はそのRefreshTokenを利用してAccessTokenを取得し直す方法を説明します。

RefreshTokenを利用したAccessTokenの再取得コード

コード全体

import requests

def refreshToken(client_id, client_secret, refresh_token):
    params = {
        "grant_type": "refresh_token",
        "client_id": client_id,
        "client_secret": client_secret,
        "refresh_token": refresh_token
    }

    authorization_url = 'https://accounts.secure.freee.co.jp/public_api/token'

    r = requests.post(authorization_url, data=params)

    if r.ok:
        return r.json()['access_token']
    else:
        return None



client_id = "アプリ詳細画面に表示されるClient Idを入力"
client_secret = "アプリ詳細画面に表示されるClient Secretを入力"
refresh_token = "AccessToken取得時に同時に払い出されるRefreshTokenの数値文字列を入力"

access_token = refreshToken(client_id, client_secret, refresh_token)

print(access_token)

コード解説

特段難しいことはなく、AccessTokenを発行する際に利用したエンドポイント(https://accounts.secure.freee.co.jp/public_api/token)に、client_id, client_secret, refresh_tokenをparamsにセットしてrequest処理を実行するだけです。

1点気をつける点としては、paramsに設定するgrant_type(どういうフローを利用するかというOAuth2.0で規定されるもの)をrefresh_tokenとする必要がある部分です。参考にAccessTokenを取得する場合に利用した、paramsは以下になります。

params = {
    'grant_type' : 'authorization_code',
    'client_id' : client_id,
    'client_secret' : client_secret,
    'code' : code,
    'redirect_uri' : redirect_uri
}

まとめ

今回はrefresh_tokenの利用方法でした。一般にAccessTokenは比較的早く有効期限切れを起こしますので、refresh_tokenを利用したAccessTokenの発行方法を覚えておくと、再度認可コードの発行から実施しなくてもすみます。

難しい実装は不要ですので、是非慣れていただければと思います。

API関連Python
スポンサーリンク
シェアする
ks_Accountingをフォローする
経営管理deプログラミング

コメント