soogle’s diary

soogle life log

facebookのphotos.get APIにだまされない方法(画像をfacebookでAPI ごしにPOSTした後、graph APIで画像URLを取得する)

facebookAPIごしに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はいい感じのドキュメントやサンプルがまだまだ少ない(特に日本語は)ので、
今のうちに研究しておくことが肝心だが、仕様もよくかわるので、どっぷり依存するのも
怖いこのごろです。