facebookのphotos.get APIにだまされない方法(画像をfacebookでAPI ごしにPOSTした後、graph APIで画像URLを取得する)
facebookをAPIごしにuploadした画像のfacebook上でのURLを取得したく、
FQLを使いたいところだが、その場合、photoのidの扱われ方が、graphAPIとFQLでことなるようなので、
photoをuploadをする場合、graphAPIで始まり、終わらせるという完結方法がベターだと思われる。
その際、photos.getというREST APIがあるのだが、どんなにたたいても、
レスポンスがからのままだし、subj_idとかよく使い方わからないしということで、
もう少し調べてみると、どうやらレガシーなAPIとのこと。
http://developers.facebook.com/docs/reference/rest/photos.get/
そのためGraph APIでphotoをuploadしたあと、そのレスポンスとして返ってくるidがgraph apiで
使えるため、access_tokenを利用して再度アクセスして、jsonデータで取得することで、
画像URLを取得することができる。
<?php $create_album = $this->fb->api('/' . $album_uid . '/photos', 'post', $photo_details); // 直近のupした画像のURLを取得する $url = sprintf('https://graph.facebook.com/%s?access_token=%s&fields=picture,name', // fieldsにもっと指定できる! $create_album['id'], YOURACCESSTOKEN // アクセストークン ); $url = file_get_contents($url); $json_data = (json_decode($url,true)); ?>
fb->apiたたいてるんだから、file_get_contensしなくてもデータが取得できそうな気がするが、
リクエストパラメータをどのように記載するか?何度試しても取得できてなかったので、NULLになる
ので、いったん原始的なAPIな叩き方法で地道に取得してみた。
facebookはいい感じのドキュメントやサンプルがまだまだ少ない(特に日本語は)ので、
今のうちに研究しておくことが肝心だが、仕様もよくかわるので、どっぷり依存するのも
怖いこのごろです。