Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tesla の公式API をPostman から実行し、 車両データの取得やエアコンの操作など...

Tesla の公式API をPostman から実行し、 車両データの取得やエアコンの操作などを行ってみよう!

Postman 日本上陸記念イベントのLTで使用
https://www.postman.com/jp/events/postman-japan-launch/

詳細はBlog で
https://www.cdata.com/jp/blog/tesla-fleet-api-postman

Kazuya Sugimoto

December 05, 2023
Tweet

More Decks by Kazuya Sugimoto

Other Decks in Technology

Transcript

  1. © 2023 CData Software Japan, LLC | www.cdata.com/jp Tesla の公式API

    をPostman から実行し、 車両データの取得やエアコンの操作などを行ってみよう! Postman 日本上陸記念イベント LT 2023/12/05 CData Software Japan Kazuya Sugimoto -Lead Engineer
  2. © 2023 CData Software Japan, LLC | www.cdata.com/jp CData Software

    Japan の API holic 担当 今まで300種類以上のAPIを見たり触ったりしています。 Twitter:@sugimomoto Facebook:sugimomoto Blog:http://kageura.hatenadiary.jp/ About Speaker 今まで作ったPostman Collection の 数を数えたところ、190でした!
  3. © 2023 CData Software Japan, LLC | www.cdata.com/jp CRMおよびマーケティング自動化 会計システム

    コラボレーションおよびERP オンプレミスおよびクラウドDB ドキュメントおよびファイル形式 ソーシャルネットワーキング ネットワーキングおよび認証 電子商取引 その他 CData Software は様々なツール・サービスの接続先を 拡張するドライバー・コネクター製品を扱っている会社 https://www.cdata.com/jp/drivers/
  4. © 2023 CData Software Japan, LLC | www.cdata.com/jp みなさんTesla のAPI

    ってご存知ですか? https://www.teslaapi.io/
  5. © 2023 CData Software Japan, LLC | www.cdata.com/jp 電気自動車Tesla の様々なデータ

    機能にアクセスすることができるAPI https://kageura.hatenadiary.jp/entry/teslaapihowtouse
  6. © 2023 CData Software Japan, LLC | www.cdata.com/jp ただ、このAPI は非公式・・・

    ・テスラモバイルアプリの内部で利用されているAPI をリバースエンジニアリングして仕様を明らかにしたア ンオフィシャルなAPI ・サードパーティが利用することを想定して作られて いるわけではない ・当初はOAuth のPassword Grant だったため、 サードパーティにID・PWを共有しなければいけな かった ・さらにAPI 用のAccess Token はかなり強力な 権限かつスコープも無いので、位置情報が見える のはもちろんのこと、鍵の開け締めもできてしまう
  7. © 2023 CData Software Japan, LLC | www.cdata.com/jp というわけで実際にTesla 公式API

    を試してみよう! そして、みんなでEV API 界隈をもっと盛り上げよう! APIを検証する上でもPostman が便利だよ!
  8. © 2023 CData Software Japan, LLC | www.cdata.com/jp Tesla 公式API

    を試すまでのステップ 1. 環境構築 2. テスラアカウントの作成 3. アプリケーションリクエストの作成 4. Public Key・Private Key ペアを作成・ホストする 5. OAuth 2.0 With PKCE でサードパーティトークンを生成 6. Tesla Fleet API へリクエストを行う
  9. © 2023 CData Software Japan, LLC | www.cdata.com/jp 開発・本番環境の入手方法 https://ts.la/kazuya99717

    みんな悩む環境構築ですが、テスラはとっても簡単♪ URLにアクセスして、数クリックとクレジットカード情報を 入力するだけで入手できます♪
  10. © 2023 CData Software Japan, LLC | www.cdata.com/jp でも、どうしても環境構築が難しい場合は? Postman

    にはMock API を作る機能 があるよ! https://learning.postman.com/docs/designing-and- developing-your-api/mocking-data/setting-up-mock/
  11. © 2023 CData Software Japan, LLC | www.cdata.com/jp テスラアカウントの作成 https://www.tesla.com/ja_jp/

    環境を入手したら、テスラアカウントを準備 このアカウントを使って、API リクエストのために必要な OAuth のアプリケーション登録を行う 環境を入手している場合、すでにテスラアカウントは作っ ているものと思います 実は環境は持っていなくても、アカウント作成は可能な ので、おそらくアプリ作成はどんな人でも可能なのではな いか?
  12. © 2023 CData Software Japan, LLC | www.cdata.com/jp Public Key・Private

    Key ペアを作成・ホストする • Tesla APIの連携で一番面倒なのがここ • Tesla API のVehicle Commands(エアコンの ON/OFFやキーの開け締めのコマンド等)を実行す るために公開キー・秘密キーの利用プロセスが必要 • 予め公開キーと秘密キーを作成し、さらに公開キーを APIがアクセスできるパブリックなWebSiteの.well- known配下でホストする必要がある • 私は今回 Azure Static Web Appsを使って、下 記コマンドで生成した公開キーをホスト >openssl ecparam –name prime256v1 – genkey –noout –out private.pem >openssl ec -in private.pem -pubout -out public.pem
  13. © 2023 CData Software Japan, LLC | www.cdata.com/jp Public KeyをホストしたサイトをTesla

    API で登録 パートナー用アクセストークンをOAuth 2.0 のClient Credentials で取得 ホストしたWebSiteのドメインを partner_accoountsエンドポイントで登録 ※予めアプリのAllowed Originにも登録しておく
  14. © 2023 CData Software Japan, LLC | www.cdata.com/jp サードパーティトークンの取得 Property

    Value Token Name Tesla Fleet API Grant type Authorization Code (With PKCE) Callback URL https://oauth.pstmn.io/v1/callback Auth URL https://auth.tesla.com/oauth2/v3/authorize Access Token URL https://auth.tesla.com/oauth2/v3/token Client ID 作成したアプリのClient IDを指定 Client Secret 作成したアプリのClient Secret を指定 Code Challenge Method SHA-256 Code Verifier Automatically generated Scope openid offline_access vehicle_device_data vehicle_cmds vehicle_charging_cmds State (empty) Client Authentication Send client credentials in body 認証・認可方式がOAuth 2.0 With PKCE だけど、 Postman がうまくハンドリングしてくれる!
  15. © 2023 CData Software Japan, LLC | www.cdata.com/jp あとは取得したToken を使って実際にAPI

    を試す! 認可したユーザーが保有する車両の情報は以下の 「/api/1/vehicles」を使って取得可能 GET /api/1/vehicles HTTP/1.1 Host: fleet-api.prd.na.vn.cloud.tesla.com Authorization: Bearer {{サードパーティトークン}} 車両の詳細なデータが取得したい場合は GET /vehicles/{{id}}/vehicle_data ただし、Teslaが起動していないとすべてのデータが取得 できないので、予め起動する必要あり POST /vehicles/{{id}}/wake_up
  16. © 2023 CData Software Japan, LLC | www.cdata.com/jp 本日の詳しい手順は Postman

    アドベントカレンダーで公開! https://www.cdata.com/jp/blog/tesla-fleet-api-postman