[メモ]twitter REST API による複数画像付きツイートの仕方

久方ぶりです。

今回は、twitterのAPIでツイートに複数の画像を指定する仕方を記述します。

基本的には、次のURLの通り・・・
https://dev.twitter.com/docs/api/multiple-media-extended-entities

で、見に行くの面倒な人用に、簡単に書くと以下の通り

https://upload.twitter.com/1.1/media/upload.json

上記エンドポイントに対して、画像ファイルを1つずつuploadします。
uploadが成功すると

{
	"image": {
		"w": 1546,
		"h": 1024,
		"image_type": "image\/jpeg"
	},
	"media_id": 460938773744717825,
	"media_id_string": "460938773744717825",
	"size": 530963
}

このような、値が返って来ます。
で、返ってきた「media_id」か「media_id_string」を使ってツイートのREST APIをたたきます。

ツイートするためのエンドポイントは以下の通りです。

https://api.twitter.com/1.1/statuses/update.json
※uploadした画像のmedia_idが有効な時間はuploadしてから60分らしいです。
上記のリンク先にそんなことが書かれていた気がします。

で、、画像付きをツイートするには、今まで通りのパラメータに「media_ids」パラメータを追加します。
「media_ids」は先ほどuploadしたときの返り値のmedia_idを最大4つ(2014-06-25現在)まで設定できます。
複数指定のしかたはmedia_idをカンマ区切りで記述すればOKです。

因みに、ツイート時に5つのmedia_idを設定すると次のエラーコードとメッセージがjsonで返ってきました。
code=44
message=media_ids parameter is invalid.

また、画像1枚だけを上記の要領でツイートすると、ツイートはされますが、公式のタイムラインに初期表示として画像が表示されないようです。(2014-06-25現在)
なので、1枚しかないのであれば、今まで通り以下のREST APIを使用するのがいいと思います。

https://api.twitter.com/1.1/statuses/update_with_media.json

以上、ちょっとした覚書でした。

2014-10-31 追記:
アニメーションgifは1枚のみ可能。
アニメーションgif + jpg ×
アニメーションgif + 通常のgif ×

2015-05-21 追加:
エンドポイント /1.1/statuses/update_with_media.jsonが本日使用できなくなったっぽいです。
また、公式のweb表示も1枚のときでも正しくサムネイル表示されるようになっているようです。
※これはいつからなおったのか確認していません・・

スポンサーリンク

[忘れっぽい]phpのmongoドライバーのインストール[メモ]

何気に、phpのバージョンを上げて、mongoドライバが認識されないのを2時間くらい悩んだので、メモメモ・・・

↓インストール手順
http://www.php.net/manual/ja/mongo.installation.php#mongo.installation.manual
取りあえず、前回の使ったドライバのディレクトリで手順をやっていたのでちゃんとmakeされていなかったorz

まぁ、やる前に「make clean」しろと自分に言い聞かせる・・・

あぁ無駄な時間だった・・・

スポンサーリンク

[メモ]ページにきたメッセージの取得と返信[facebook]

ちょー久しぶりの更新ですです。

↓こちらにかいてあることをメモメモです。
https://developers.facebook.com/docs/reference/api/page/

Facebookページに対してメッセージが来た場合に、そのメッセージを取得するには
『/page_id/conversations』で取得できますです。

※permissionは「read_page_mailboxes」が必要ですです。

返信する場合は
POSTメソッドで『/CONVERSATION_ID/messages』

パラメータは「message」でよろしいらしい。
あとはいつものアクセストークンとかつければいいのかな。

※CONVERSATION_IDはメッセージを取得した際の、idで「t_id.~」のようですです。まだ確かめてないよ・・・
 responseは、id(「m_id.~」)が返ってくるらしいよ

ということで、後でやってみるためのメモですた。

スポンサーリンク

[メモ]特定のディレクトリをhttpsへ[memo]

連投・・・

仕事で入力系がある箇所をhttpsにし、それ以外をhttpとしたいという感じになったので、調べた・・・

結構な数のファイルがあるので、対象のページへのリンクをhttpsにしたりhttpにするというのは、ちょっとアフォな感じだったので、mod_rewriteを使用する方向で。

htdocs直下の.htaccessに以下のように記述

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{SERVER_PORT} 443 #httpsでアクセスがある場合にhttpへリダイレクト
    RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

httpsにしたいディレクトリの.htaccessには以下のように記述

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{SERVER_PORT} 80 #httpでアクセスがあった場合httpsへリダイレクト
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

ただし、共通で使用するファイルなどがある場合(たとえば、cssやjs、画像ファイル)、そのディレクトリの.htaccessは以下のように記述すると、どちらからのアクセスであってもhtdos直下で設定した.htaccessに影響されないようになる。

<IfModule mod_rewrite.c>
    RewriteEngine off
</IfModule>

これを設定しないと、httpsでアクセスしているページでの読み込みでセキュリティエラーになる。chromeだとファイルがよみこまれないようなるなど・・・IEだとアクセスする度にセキュリティが~といわれる・・・orz

ということで、上記のように書くといいらしいです。

スポンサーリンク