いつの間にかgarmin connectとの同期に失敗してた

withingsのfitファイルをそのままgarminconnectに投げる運用をしてたけど2/15から同期に失敗してた。

というのを今週になって気づいた…

ってことで改修作業。


raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden

エラーをみると

どうもリクエストヘッダーまわりくさい。

何かサーバー側で仕様が変更されたんだろうという推測はできるが、問題はその何か。

ユーザー登録してAPIの詳細なドキュメントやリリースノートを読めばわかるのかもしれないけど、そこはなんとなく面倒なので別の方向からアプローチ。

ってことで、webからアップロードしてみてその挙動を調べてみた。

なんか見たことのないリクエストヘッダーを発見。RFC的にありなんだっけ?(ありっぽい)

なんとなくあやしいのでこのヘッダーとvalueを追加してみた。garmin.pyの156行あたりに追加。


req = urllib2.Request(self.UPLOAD_URL)
req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
+ req.add_header('nk': 'NT')

結果としては正解。無事動くようになった!

ってか、半月近く気づかなかったのはいかがなものか?!

(一応、体重計には毎日乗ってました)

githubは変更済。

https://github.com/charoneko/withings-garmin-v2

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA