Help us understand the problem. What is going on with this article?

freee の API を利用した開発を行うためのアカウントとテストデータを、無料で設定する

More than 1 year has passed since last update.

会計サービスなどを提供するSaaSサービス 「freee」

REST APIが提供されていますが、アカウントがない・利用したことがない技術者が開発を始めようとすると、どこから手を付ければよいか、ちょっと戸惑うところがあります。

また、会計システムという特徴から、ユーザーのデータを気軽に触ることは難しく、開発用のテストデータを準備する必要があります。

ここでは、freeeのAPIを利用した開発を行おうとしている技術者が、一直線に

  • freeeの開発用アカウントを無料で開設
  • テスト用のデータ投入
  • oAuth2.0 を利用したアクセストークンの取得

するまでの手順をかいつまんでまとめてみました。

freee API とは

  • 会計や労務管理を提供するSaaSサービス「freee」の各機能を利用できるREST API
  • 「会計freee」と「労務管理freee」の2つのサービス用APIを提供
  • 認証はoAuth2.0を利用
  • 「freee Develoepers Community」 に、各種リファレンス情報がある

アカウント作成と最初のAPIコール

チュートリアルを参考に進める。

まず最初にfreeeのアカウントを作成する。
メアド+パスワードで新規登録するか、GoogleやFacebookなどでアカウントを作成する。
開発用のアカウント作成だけなら料金はかからない。

image6.png

連携するアカウントを選択

image2.png

事業形態を選ぶ。何でも良いようなので、「個人事業主」を選んで見る

image4.png

事業形態を選択する

image17.png

freeeのプラン選択画面に移動する。「お試しアカウント作成」という選択肢が下部にあるため、これを選択。「お試しプランを開始しました」という表示が出て、お試しができる。

image3.png

スタータープランのお試し、という形で会計freeeの操作画面が表示される。

image8.png

画面上部の「freeeアプリストア」をクリック

image11.png

アプリストアから開発者ページをクリック

image7.png

「開発者用テスト環境の作成」をクリック

image14.png

ここで任意のシナリオを選ぶ。
ここでは事業所形態は「個人事業主」、プランの選択は「スターター」を選びました。
「開発用テスト環境の作成」をクリック。

image1.png

「テスト環境の作成を開始しました」というメッセージが表示されるため、暫く待つ。

image22.png

しばらくすると、開発用テスト環境が作成されたというメールが届く

image18.png

アクセスして、作成したテスト用環境を開く

image13.png

「利用サービス」から「会計freee」を選ぶ

image16.png

会計freeeの管理画面に、テスト用に入力された出入金のデータが登録されていることがわかる。残高が全部リアルな金額で、口座に入っていたら良いのになあ。

image21.png

ここまでで、freee の開発用アカウント、およびテスト用データの投入が完了しました。

開発者用アプリを作る

次に、開発者用アプリを設定し、REST API経由でデータをやり取りするための準備を行います。

開発者ページ (https://app.secure.freee.co.jp/developers) に移動して、「いますぐアプリを作成」をクリックする

image20.png

「新しいアプリ」の作成画面に移動する。
名前と説明を適当に決めて、利用規約チェック後、「作成」ボタンをクリック

image1.png

事業所アカウント選択画面から、アプリと紐付けたい事業所を選択。今回は「開発用テスト環境」を選択。

image12.png

指定した名称でアプリが作成される。

image19.png

ページ内にある「Webアプリ認証用URL」をコピーして、ブラウザでアクセスする。

image5.png

oAuth2.0の認可コードを払い出すための認証ページが表示される。

image15.png

「許可する」をクリックして、認可コードが表示されればOK。アプリは正常に動作しています。これで、freee APIを利用したアプリ開発の準備が整いました。

image9.jpg

oAuth を利用したトークン取得

トークンを取得するために必要な情報

freeeの認証用エンドポイントを叩く際、

  • client_id
  • client_secret
  • コールバックURL
  • grant_type

の4つの情報が必須となる。
アプリ側で準備しているコールバックURLと、freeeのアプリ管理画面のコールバックURLは、必ず一致している必要がある。

例として、コールバックURLが

http://example.com/hoge.html

だった場合、freeeのアプリ管理画面上でも

http://example.com/hoge.html

と入力・保存しなければならない。

freeeのアプリ管理画面から、コールバックURLを設定する

freee の 開発者向けドキュメントを参考に、oAuthを利用したトークンを取得する

https://developer.freee.co.jp/

スタートガイド
https://app.secure.freee.co.jp/developers/tutorials

実装はphp。

仕様は以下の通り。

  • index.phpにclient_id を記述。freeeのoAuth認証を叩き、認可コードを取得後、コールバックURL(callback.php)に定義されたページに移動。
  • 取得した認可コード、client_id、client_secretをfreee の認証エンドポイントにPOSTし、トークンが含まれたJSONを取得する
  • 取得したJSONを表示する

サンプルコードは、oAuth2.0の認可コード認証フローを想定して記述しました。
 
index.php

<?php
define('APP_ID', '取得したclient_idを記述');
define('CALLBACK_URL', '設定したコールバックURLを記述');

$params = array(
'client_id' => APP_ID,
'redirect_uri' => CALLBACK_URL,
'response_type' => 'code', );
header("Location: " . 'https://accounts.secure.freee.co.jp/public_api/authorize/'. '?' . http_build_query($params));

index.php にアクセスすると、freeeの認証を通じて、oAuthの認可コードを取得し、GETパラメータに付与する形でコールバックURLに戻る。GETパラメータを取得し、コールバック用のコードに渡し、トークン類を取得する。

callback.php

<?php
//アプリの各種情報を定義

define('APP_ID', '取得したclient_idを記述');
define('SECRET', '取得したsecret keyを記述');
define('CALLBACK_URL', '設定したコールバックURLを記述');

//パラメータをJSON形式でPOST

$params = array(
'grant_type' => 'authorization_code',
'client_id' => APP_ID,
'client_secret' => SECRET,
'code' => $_GET['code'],
'redirect_uri' => CALLBACK_URL, );


$headers = array( "Content-Type: application/json" );

$json = json_encode($params);


//POSTリクエスト送信
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://accounts.secure.freee.co.jp/public_api/token');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);


//トークンの取得
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$result = json_decode($body, true);

//取得したトークン類を表示
var_dump($result);

index.phpにアクセス=>認可コード取得=>oAuth認証を経て、freee APIを利用するためのトークンデータが取得できました。

token.png

参照情報

freee のAPIに関するリファレンス

https://developer.freee.co.jp/
https://app.secure.freee.co.jp/developers/tutorials

oAuth認証に関するリファレンス

https://qiita.com/TakahikoKawasaki/items/63ed4a9d8d6e5109e401
https://qiita.com/TakahikoKawasaki/items/8567c80528da43c7e844
https://qiita.com/naoya_matsuda/items/6033b33d8582e0e9a096

免責事項など

この手順は2019年8月時点の情報を元にまとめました。SaaSサービスの性質上、UXや準備手順は予告なる変わるかもしれません。

この記事は個人的に情報を再整理してまとめたものとなります。
開発・操作の際は、各種公式ドキュメントをご確認いただければ幸いです。

TakeshiNickOsanai
Developer Relation Manager, Sales Engineer/PreSales, User Community Supporter, CMS Engineer, AWS Certified Solutions Architect
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