Simplenoteを使い始めたので、ここにウェブログの下書きを置くようにした。コピペでVimに持ってきて公開スクリプトを叩くというのが面倒そうなので、一覧から選択して公開するようなツールを書くことにした。しかしうまく認証が通らず、APIトークンを取得できなかった。原因はUser-Agentヘッダーの指定がなかったことだった。

SimplenoteのAPIは今は非公開扱いのようだが、旧来のものを変わらず使うことができる。Simplenote API2という文書が詳しい。

まずはとにかく認証を通してトークンをもらう必要がある。しかしその認証用のエンドポイントURLにUser-AgentヘッダーなしでPOSTリクエストを行うと500が返ってきてしまう。500なためヒントがゼロで、気づくまで大変だった……。多くの標準HTTPリクエスト・ライブラリーではデフォルトでUser-Agentが設定されるのでハマらない。しかしNode.jsのhttpsモジュールやrequestパッケージでは設定されないのでハマる。

この認証用のエンドポイントURLに限らず、この文書で触れられているエンドポイントURLへPOSTリクエストを行う場合には、必ずUser-Agentヘッダーを指定しなければならない。GETリクエストの時は必要ないようだが、指定しておいた方が無難だろう。


良く文書を見ると、「User-Agentヘッダーを使ってアプリを識別している」と書かれていた。もっとしっかりと読むべきだった。