新年、あけましておめでとうございます

昨年は全くブログの更新をしてきませんでしたが、[ssmonline #18]()にて「アウトプットしないのは知的な便秘である」ことを聞き、今年こそは月1でブログを更新できるよう頑張りたいなあと思っている所存です。

さて、頑張るといえば(強引)実は私、2022年1月1日元日からあることを頑張り始めたんです。

それはずばり...............................ジョギング!20にしてようやく体がなまってなまってナマコになりかけていることに気づいたので、ジョギングを初めました!執筆時現在1/4、既に3日は続いています!めでたいね。

ただ、ホイホイと習慣を付けられないのが私の悪いところ。確かにジョギングを初めたことはいいことですが、継続しなければ意味がありません。

そこでこいつの登場ダァ!

Capture_2022-01-02-19-11-13

Xiaomi Mi Band 6!通知お知らせから運動のログ、睡眠の質測定まで全部やってくれる万能デバイス!

こいつを使ってバリバリ運動してモチベを上げてやるぜー!ヒャッハー!!!

と、思っていた時期が私にもありました。

シェアしづらい

これは完璧にUIの問題でもあるのですが、毎日の運動ログをシェアするのがとても面倒です。kaniyamaは誰かに見張られていないとどうしても継続して運動をすることが出来ません。

しかーし、運動ログを共有するにはアプリを立ち上げもっと表示を押してPAIを押してスクリーンショットを取ってアプリをギャラリーに切り替えて共有を押してTwitterが出てくるまで待って...

この間実に1分。そもそもMi Fit(Mi Bandの運動ログを記録するアプリ)の立ち上がりが遅すぎるし、何故かアプリ内の共有ボタンからはTwitterDMの選択画面しか立ち上がらない。いやツイートさせてほしいが。

と、いうことで。ここはヨワヨワデベロッパーもどきらしくAPI叩いて解決しようかなと。そう思い立ちました。

π(PAI)ってなに?

え?πって円周率って意味ですよね???(煽り運転)

という冗談はさておき、Xiaomi Mi Fitにおける"PAI"とは、運動をすることで得られるポイントのことを指します。より激しい運動をすることでPAIを多く獲得することが出来ます。またこのPAIは7日間貯められます。(7日前までのPAIの合計がその日のトータルPAI値です)

PAIを得たからどう...ということはないです。別に特別なサービスが受けられたりもしません。が、ポイントという明確な数値があるだけでモチベーションが上がります。

この記事では、そんな憎めそうで憎めないπ...じゃなかったPAIをもっと見やすくして、自動でシェアしてくれるプログラムを組もうと思います。

環境

本記事では以下の環境を採用しました。

  • Firebase上に構築
    • FireStoreに様々なtokenやwebhook等を突っ込んでおく。
    • Functionsで定期実行する関数を作成し、APIから得られるデータを自動的にpixe.laにつっこむ。

簡単だね!

開発

まずは自分のアカウント状況を確認。

実はMi FitはMi FitアカウントというIDPで管理されており、投稿者はXiaomi MiアカウントというIDPのOIDCでMi Fitアカウントを所持しています。

この場合どうやってMi FitのAPIを叩けばいいかというと、まずXiaomi Miアカウントのtokenを取得してMi Fit APIの exchangeAccessTokenWithXiaomiAccessToken APIを叩いてやれば良さげ。

そーすはここ

とりあえずその把握だけシておきまっしゃろ。

Mi Dev Platformへ登録

ということなので、まずXiaomiのtokenを取得する必要があります。そこでOauth認証でtokenあたり諸々をもぎ取るためにClient情報を登録します。

公式サイトにわかりやすい説明が載っていたので、このまま進行だー!

Mi Dev Platformに飛んで───!

2022-01-04%2009.07.24%20dev.mi.com%20d4c5a7439c33

適当なところから開発者アカウントを取得───!

2022-01-04%2009.15.59%20dev.mi.com%205d792382bb02

2022-01-04%2009.19.09%20dev.mi.com%205f8c7e9e12e7

.......................あれ?

なんか企業アカウントは出るんだけど...ここじゃないのかな。いやでもDeepLで翻訳した限り"请选择开发者账户类型"は「デベロッパーアカウントの種類を選択してください」って意味らしい。

...うん?

2022-01-04_09-23

「ユーザーデータと個人情報のセキュリティを保護し、ユーザーのプライバシー保護能力を強化するため、Xiaomi App Storeは現在、個人開発者としての登録を停止し、企業開発者としての登録に尽力しています。」

マジィ!?!?

まだ慌てるときじゃない

おちおちおちおちおちつけ。餅つけ。いや、あれだ。Mi Fit側のAPIをもう一度確認してみよう。何らかの方法でXiaomiのアカウントを経由しなくても認証を通せたりするかもしれない。

なんならMi FitアカウントをXiaomiアカウント以外と紐付ければいいわけだし???別に???焦ってないし??????(?????)

ということでこいつを読んでみる

あー、これ読んでる限り恐らくHuami側のDevポータル登録だけでいけるかな?

というわけでZEPP Dev Portalへ登録し───

2022-01-04_09-38

いけそうか...!?

2022-01-04_09-41

...え?ID、番号?

サポートデスクへメールを送る

...IDって何のことじゃろと思いググったところ、どうやら中国にもマイナンバーみたいな制度があるそう。但しこの番号は中国国籍を持っている人でないと取得できないらしい。いや無いて!私日本人やで!!!

このあたりを参考にした。

ということで、サポートデスクにクソみたいなメールを送ってみることにする。

2022-01-04_10-10