Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

freee APIを使ってみました(準備:登録~アクセストークンの取得と、事業所IDの取得、ユーザーIDの取得、アクセストークンのリフレッシュ)

More than 1 year has passed since last update.

やりたいこと

クラウド会計ソフトで有名なfreee、およびfreee APIを利用すれば経理チーム的な業務改善に繋がるのではないかと思いました。そのためにとりあえずどういうことが出来そうかを試してみます。
今回は基本的な使い始める準備までをやってみました。

APIを扱えるまでの準備

ドキュメントが豊富ですが、以下をスタートにすると良さそうです。
freee アプリストア チュートリアルガイド

アプリ作成

https://app.secure.freee.co.jp/developers/applications
より、案内のまま簡単に作成できました。

アクセストークンの取得

流れとしては
1. Webアプリ認証用URLへのアクセス
2. 認可コードの取得
3. アクセストークン
となります。

手元のGit Bashなどでcurlベースで試してみます。

sample.sh
curl -i -X POST \
 -H "Content-Type:application/x-www-form-urlencoded" \
 -d "grant_type=authorization_code" \
 -d "client_id=(★画面からコピーした「Client ID」)" \
 -d "client_secret=(★画面からコピーした「Client Secret」)" \
 -d "code=(★さっきブラウザで取得した認可コード)" \
 -d "redirect_uri=urn:ietf:wg:oauth:2.0:oob" \
 'https://accounts.secure.freee.co.jp/public_api/token'

取得できました。

{"access_token":"XXXXXXXXXXXXXXXXXXXXXXXXX","token_type":"bearer","expires_in":86400,"refresh_token":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","scope":"read write default_read","created_at":1556711794}

事業所IDや自分のIDの取得

ここからはリファレンスも一緒に見てゆくと良さそうです(Swagger UIでしょうか。見やすいですね!)。
リファレンス

色々試すにあたり、自身の事業所IDや自分自身のユーザーIDが必要そうなので取得してみます。

事業所IDの取得

sample.sh
curl -i -X GET \
  -H "Authorization:Bearer (★さっき取得したアクセストークン)" \
  -H "Content-Type:application/json" \
'https://api.freee.co.jp/api/1/companies'

↓結果を確認します。

{"companies":[
{"id":(数値),"name":"株式会社ヴァリューズ","name_kana":"ヴァリューズ","display_name":"株式会社ヴァリューズ","role":"read_only"}]

ユーザーIDの取得

sample.sh
curl -i -X GET \
  -H "Authorization:Bearer (★さっき取得したアクセストークン)" \
  -H "Content-Type:application/json" \
'https://api.freee.co.jp/api/1/users/me'

↓結果を確認します。

{"user":{"id":(数値),"email":"(メアド)","display_name":null,"first_name":null,"last_name":null,"first_name_kana":null,"last_name_kana":null}

アクセストークンのリフレッシュ

ところで、アクセストークン取得時の

"expires_in":86400,

から分かる通り、86400秒(24時間)で破棄されます。24時間を過ぎてアクセスすると

401 Unauthorized
{"message":"アクセスする権限がありません"

とエラーとなります。
アクセストークンを取得した時についてくるリフレッシュトークンを利用し、新たなアクセストークンを取得する必要があります。

sample.sh
curl -i -X POST \
 -H "Content-Type:application/x-www-form-urlencoded" \
 -d "grant_type=refresh_token" \
 -d "client_id=(★画面からコピーした「Client ID」)" \
 -d "client_secret=(★画面からコピーした「Client Secret」)" \
 -d "refresh_token=(★アクセストークンを取得した時に一緒についてきた「refresh_token」)" \
 'https://accounts.secure.freee.co.jp/public_api/token'

取得できました。

{"access_token":"YYYYYYYYYYYYYYYYYYYY","token_type":"bearer","expires_in":86400,"refresh_token":"YYYYYYYYYYYYYYYYYYYYYYYYYYY","scope":"read write default_read","created_at":1556954721}

リフレッシュトークンも更新されます。前のリフレッシュトークンでやろうとすると

{"error":"invalid_grant","error_description":"指定された認可グラントは不正か、有効期限切れか、無効か、リダイレクトURIが異 なるか、もしくは別のクライアントに適用されています。"}

といったエラーになります。そらそうですね。

という訳で、色々とAPIを使って行ける準備が出来ました。

yuji_saito
SIで産まれエンタメ業界で育ったデジタルマーケティング方面のエンジニア。サーバサイド寄り。 Java , Python , PHP , MySQL , AWS , Tableau
valuesccg
「インターネット行動ログ分析サービス」など、デジタルマーケティング領域での新たな価値創造を通し、各企業の成長支援を行っています。エンジニア募集中。
https://www.valuesccg.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away