freee APIのアクセストークンを取得する

freee APIへアプリケーションを登録する

freee APIを利用するアプリケーションを登録します。登録によりアプリケーションのIDとSecretが発行され、freeeユーザーが当該アプリを利用できる状態となります。
【注意】エンドユーザーは認証用URLを用いてアプリケーションの認証を行います。
開発者のアカウントで会計freeeにログイン後、アプリ一覧画面 にアクセスし、「+新しいアプリケーションを登録」をクリックします。

 

アプリケーション名、コールバックURIを入力し保存します。(入力内容は登録後にも編集できます)
※ ローカル環境でのテスト時には、コールバックURIに「urn:ietf:wg:oauth:2.0:oob」をご利用ください。

 

アプリケーションが登録され、IDとSecret、認証用URL(エンドユーザーが認証時にアクセスするURL)が表示されます。

 

※ 以後、アプリケーションの一覧から、登録したアプリケーション名をクリックすると、この画面を確認できます。


OAuth 2について

OAuth 2.0認証は、サードパーティアプリに対してhttpサービスへのアクセスを付与するフレームワークです。アクセストークンを用いて、保護されたリソースにアクセスできます。


連携アプリのアクセストークンを取得する

アクセストークンの取得方法

アクセストークンを取得するためには、「Webアプリ認証用URL」にて認可コード(Authorization code)を取得し、それを用いたhttpリクエストを送る必要があります。また、認可コードの有効期間は10分です。
※Webアプリ認証用URL

https://secure.freee.co.jp/oauth/authorize?client_id=${AppID}&redirect_uri=${callbackURI}&response_type=code

※ 「Webアプリ認証用URL」へのアクセス時には、Googleアカウント等のソーシャルログインではなく、freeeアカウントのメールアドレス・パスワードでログインする必要があります。
redirect_uriに「urn:ietf:wg:oauth:2.0:oob」を指定している場合、「Webアプリ認証用URL」へそのままブラウザでアクセスしても認可コード(Authorization code)を確認できます。

「許可する」をクリックすると、認可コードが表示されます。(有効期間:10分)

※ テスト用に画面に表示しています。本来はリダイレクトしてリダイレクト先に認可コードを渡すため、本番環境ではこのような表示は不要です

コンソール上からcurlコマンドを使ってアクセストークンを取得する例は下記のようになります。

curl -i -X POST \
 -H "Content-Type:application/x-www-form-urlencoded" \
 -d "grant_type=authorization_code" \
 -d "client_id=${お客様のApp ID}" \
 -d "client_secret=${お客様のSecret}" \
 -d "code=${先ほどのauthorization code}" \
 -d "redirect_uri=${連携アプリのコールバックURI}" \
 'https://accounts.secure.freee.co.jp/public_api/token'

成功すると、レスポンスとして 下記のようにアクセストークン、リフレッシュトークンが得られます。有効期限は、アクセストークンについては24時間、リフレッシュトークンでは無期限となっています。使用する際は必要に応じてrefresh、revokeしてください。

{ 
"access_token": "${access_token}", 
"token_type": "bearer", 
"expires_in": 86400, 
"refresh_token": "${refresh_token}", 
"scope": "read write" 
}

refreshする例は下記のようになります。

curl -i -X POST \
 -H "Content-Type:application/x-www-form-urlencoded" \
 -d "grant_type=refresh_token" \
 -d "client_id=${お客様のApp ID}" \
 -d "client_secret=${お客様のSecret}" \
 -d "refresh_token=${前回取得したrefresh_token}" \
 'https://accounts.secure.freee.co.jp/public_api/token'

それぞれのAPIは、取得したaccess tokenを添えて利用したいAPIへアクセスすることで利用できます。
例えば、Bearer Headerに添付してcurlコマンドを実行する例は下記のようになります。

curl -H "Authorization: Bearer ${取得したaccess token}" "https://api.freee.co.jp/api/1/xxx"

※ アクセストークンを用いたGET・POST等のリクエスト送信の詳細については、こちらのページで取り扱います。

エンドユーザーのアプリ利用手順

一般的には次のような流れとなり、ユーザーがfreeeへログインし「許可する」をクリックするだけで完了します。

  1. エンドユーザーが認証用URLに誘導される(その際、freeeへのログインが要求される)
  2. エンドユーザーが認証用URLにて許可の操作を行う
  3. 設定していたリダイレクトURIによって元のアプリに戻る(%9