回 QR 設定
格式
QR code 的格式
給要自己產生 QR code 的後台。一張 QR code 是一個網址,設定放在 # 後面:瀏覽器不會把 # 後面的內容送到伺服器。網址前段一定是 https://tracker.iwi.tw/setup.html,換成其他網域或路徑,App 會判定不是定位郵差的設定。
https://tracker.iwi.tw/setup.html#<format>.<data>.<check>- format
- 1:明碼;2:用密碼加密。App 看到不認得的格式會請使用者更新
- data
- 格式 1:設定 JSON 的 UTF-8 做 base64url(不補 =)。格式 2:見下方
- check
- 「<format>.<data>」這段字串的 SHA-256,取前 8 個小寫十六進位字。網址被截斷或改過時對不上,App 不會匯入
設定 JSON
- t
- 標題,必填
- u
- URL,必填。https://;http:// 只接受 localhost、127.0.0.1、10.0.2.2(開發版 App)
- m
- Method。PUT 才寫,省略是 POST
- h
- Header,[[key, value], …],依順序;沒有就省略
- n
- 備註,沒有就省略
欄位檢查和 App 的伺服器編輯頁相同,不合格就整張不匯入;只有標題和手機上已有的重複時不擋,會自動加上 (2)、(3)。不認得的 key 會略過。匯入後一律是啟用的;定位中不能匯入。一張 QR code 只放一台伺服器,不帶採集規則。
格式 2:用密碼加密
用 PBKDF2-HMAC-SHA256(密碼先做 NFC 正規化再以 UTF-8 編碼、16 bytes 隨機 salt、600,000 次)推出 256 bit 金鑰,以 AES-GCM(12 bytes 隨機 iv)加密設定 JSON。<data> 是 salt、iv、密文與驗證碼依序接在一起的 base64url。密碼請只用英文字母、數字和符號(ASCII ! 到 ~,不含空白):手機的密碼欄通常打不出其他字元。
範例
{"t":"Example Server","u":"https://api.example.com/v1/tracker","h":[["X-Api-Key","f0bb877b43ef7e5880a51405f415e99c"]]}https://tracker.iwi.tw/setup.html#1.eyJ0IjoiRXhhbXBsZSBTZXJ2ZXIiLCJ1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvdHJhY2tlciIsImgiOltbIlgtQXBpLUtleSIsImYwYmI4NzdiNDNlZjdlNTg4MGE1MTQwNWY0MTVlOTljIl1dfQ.2afe2593網址長短幾乎由權杖決定。要張貼的 QR code 建議用 API key 或簡短的 JWT。