http://e-tipsmemo.hatenablog.com/entry/2018/07/14/000000e-tipsmemo.hatenablog.com
次は画像をアップロードする方法を示す。
昔は画像のアップロードとツイートを同時にできるENDPOINTがあったらしいが、今は使えないので
画像をアップロードしてからそれから得られるmedia_idを伴って、ツイートするという流れになる。
また、画像をアップロードするときの画像のデータ形式はバイナリでなければならない。
とりあえずアップロードする方法なので、画像を得るとか読み込む方法は無視して、
前提として、画像データ(jpg/png)のバイナリをvectorに入れたものを引数に取っているとする。
今までのsignature parameterの作り方とは違って、画像のバイナリデータをパラメータに入れない。
bodyに書き込むバイナリデータにはプログラム中の変数名で言うと、
[preData][image binary][postData]
という構成になっている。
preDataのフォーマットはコメントにあるとおりで、boundaryという文字列は適当に10文字以上ぐらいの長さであれば
本当にどんな文字列でもよくて、それを使用する。
postDataもboundaryを用いている。
あとは、headerにboundary文字列を示すものを入れておきつつ。
bodyに先ほど作ったデータを入れて、
httprequestを投げるだけ。
jsonの文字列がかえってくるので、C++ Rest SDKのjson::valueクラスに突っ込むと、連想配列でアクセスできるので
ツイートするときに必要なmedia_idを得る。
帰ってくるjsonには型の違いから、media_id_string(ダブルクオーテーションでくくられている)とmedia_id(純粋に数値)があるので使いやすいほうを選べる。
また、
軽く実験したところ、他人のAccess Token Secretを利用してでアップロードされたmedia_idを利用して
つぶやくことはできない。(と思われる)
参考
- 作者: ビャーネ・ストラウストラップ,Bjarne Stroustrup,柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/02/28
- メディア: 単行本
- この商品を含むブログ (11件) を見る