回 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。