Facebookが提供しているPHPのSDKのバージョンアップについてです。
3系から5系にバージョンアップしたので少しだけサンプル残したいと思います。
3系
$params = [
'message' => '投稿メッセージ',
'link' => 'http:example.com',
'access_token' => '{access_token}'
];
$facebook = new Facebook(['appId' => '{app-id}','secret' => '{app-secret}'];
$ret = $facebook->api('/v2.4/me/feed/', 'POST', $params);
5系
$params = [
'message' => '投稿メッセージ',
'link' => 'http:example.com',
];
$facebook = new FacebookSDK([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.9',
]);
//postメソッドの場合、第5引数にバージョンを指定することもできます。
//getメソッドは第4引数にバージョンを指定できます。
$facebook->post('/me/feed', $params, '{access_token}');
5系の戻り値について
5系の場合、post、getメソッドの戻り値は、FacebookResponseのオブジェクトです。
ここからエンドポイントにあった方法で値を取得することができます。
どのエンドポイントでどのオブジェクトを使用できるかは、
分かってないんですが、合わないメソッドを呼ぶとエラーが出るので
開発時には気づくと思います。
下記の他にもいくつかるのですが、よく使いそうなものを紹介します。
getGraphNode
getGraphObjectに替わる新しいメソッドです。
多分、単一のオブジェクトを取得する用なんだと思います。
$res = $facebook->post('/me/feed', $params, '{access_token}');
$node = $res->getGraphNode();
$id = $node->getField('id'); //これでポストしたメッセージのidがとれます。
ちなみにgetGraphObject は、sdk のv6で削除予定です。
* @deprecated 5.0.0 getGraphObject() has been renamed to getGraphNode() * @todo v6: Remove this method
getGraphEdge
多分、リスト形式のオブジェクトを取り扱う用です。 配列として扱えます。
$res = $facebook->get('/me/permissions', '{access_token}');
$edge = $res->getGraphEdge();
if(count($edge) > 0){
foreach($edge as $item){
//somthing
}
}
getGraphUser
ユーザー情報に特価したオブジェクト用です。
$res = $facebook->get('/me?fields=id,name', '{access-token}');
$user = $res->getGraphUser();
$name = $user['name'];