LoginSignup
1
0

More than 1 year has passed since last update.

CURLコマンドを使ってfreee APIにアクセスする

Last updated at Posted at 2022-02-14

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

これが 先ほどのauthorization code を取得する方法みたい。

アクセストークンを取得するためには、「Webアプリ認証用URL」(https://accounts.secure.freee.co.jp/public_api/authorize?client_id=${お客様のClient ID}&redirect_uri=${お客様のコールバックURI}&response_type=code)にて認証コード(Authorization code)を取得し、それを用いたhttpリクエストを送る必要があります。認証コードの有効期間は10分です。

はまった。${}は要らんみたい。

https://accounts.secure.freee.co.jp/public_api/authorize?client_id=898546c46ca42gh6960e1a6579327e629706050978yx83961a1c46be3cec5f78&redirect_uri=urn:trgf:wg:oauth:2.0:oob&response_type=code

image.png

image.png

使ったCURLコマンド

curl -s -S --compressed -tlsv1.2 https://accounts.secure.freee.co.jp/public_api/token -i -X POST -H 'Content-Type:application/x-www-form-urlencoded' -d 'grant_type=authorization_code' -d 'client_id=898546c46ca42gh6960e1a6579327e629706050978yx83961a1c46be3cec5f78' -d 'client_secret=58b557e2e6577d4b627a7a217bc7856891f3d586cd38ec0502cebfe7c4730fc7'   -d 'code=c173f5exc8e5208320ddfa86db66c973dba895fcbcdd704265c036f1b52e6rf9' -d 'redirect_uri=urn:trgf:wg:oauth:2.0:oob'

無事アクセストークンが取れました。

{"access_token":"xYzxccb3f155c9ab924f7232f449703d94777d22d1dcb3039908d501b3bb85853","token_type":"bearer","expires_in":86399,"refresh_token":"xced554043f399093315f61d5af11771716c41bf678a60035203ed709267d93","scope":"default_read accounting:account_items:read accounting:companies:read accounting:deals:read accounting:docs:read","created_at":1644818713}

freee APIを使ってアクセスしてみます。

アクセストークンを使って実際にデータを取ってみよう。

curl -s -S --compressed -tlsv1.2 https://api.freee.co.jp/api/1/companies -i -X GET   -H 'Authorization:Bearer xYzxccb3f155c9ab924f7232f449703d94777d22d1dcb3039908d501b3bb85853' -H 'Content-Type:application/json'

結果です。jsonだ。Content-Type:application/xml としたけど変化なし。

{"companies":[{"id":1588789,"name":"","name_kana":"","display_name":"〇電機株式会社","role":"admin"},{"id":2014076,"name":"","name_kana":"","display_name":"〇電機株式会社2","role":"admin"},{"id":2080611,"name":null,"name_kana":null,"display_name":"△プラン: 開発用テスト環境","role":"admin"}]}

注意)ここでの例は本物に似せた実際とは違うIdを使っています。

エラーメッセージ。

  • {"error":"unsupported_grant_type","error_description":"この認可グラントのタイプは認可サーバではサポートされていません。"}
    ${}があったためだ...

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

まだ有効である時に 先ほどのauthorization codeを使ってサクセストークンを取得しようとしたからかな?

アクセストークン等の自動取得(変数に)するための予行演習。

jqを使ってname形式に変換できればいいんですがね。

なんかごちゃごちゃしていますが、以下のようにすれば変数として使えそうです。

| jq . | sed -e 's/"//g' | sed -e 's/://g' | sed -e 's/,//g' | sed -e 's/{//g' | sed -e 's/}//g' | sed '/^$/d' | sed -e 's/^[ \t]*//' |
cat > $tmp-loginInfo

access_token=$(nameread access_token $tmp-loginInfo)

以前の設定のままで接続してみると

{"message":"アクセスする権限がありません","code":"expired_access_token"}

さすがですねぇ、トークンの再作成が必要です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0