TwitterつかうアプリケーションでC++ Rest SDKを利用した。
C++ Rest SDKはexperimentalだがoauth1 oauth2の実装もしてあったが使い方がよくわからなかったので
httprequestを直接つかった。
Twitter認証のステップをメモしておく。
最初にrequestTokenを得る。
CONSUMER_KEYはTwitterのアプリを登録したときにもらうやつで。
ATS(ACCESS_TOKEN_SECRET)は最後にもらうやつなので、この時点では空文字
これらのパラメータはkeyでソートされている必要がある。
署名
C++ REST SDKのuri_builderはfalseを引き数に取らないと、appendしたときに勝手に要素をuri_encodeしてくれてしまうので
何回もやると%が%25になる関係で %252525..とかになってTwitterからAuthentication Errorが帰ってきたりする。
署名にはHMAC-SHA1が必要なので以前書いたこのライブラリを利用している。
e-tipsmemo.hatenablog.com
このライブラリはstd::stringしか受け付けないので、windowsでUnicodeを設定して開発しているならば変換する必要あがあった。
e-tipsmemo.hatenablog.com
パラメータを利用してAuth文字列を得る。
Authenticationの文字列は "=" と ","でつなげるらしくこれはライブラリにはなかったので素朴に書いた
ライブラリのhttpclientを利用して、POSTで投げる。
responseの文字列は成功すればurl_queryの形で帰ってきて失敗すると、jsonで返ってくるという様なので
取りあえず url_queryだとしてパースして
パースに失敗したらREQUEST_TOKENの値がおそらく空なのでそれで判定するという雑な感じでとりあえず実装した。