ad

2014年5月31日土曜日

Facebook API! PHP SDK V4 でFriend List (友達情報?) 取得

2014年4月から5月に変わるあたりに、Facebook のアプリに関する大きな変更が!
ということで調べたのでメモ。

  • Facebook のPHP SDKのバージョンが4に。(その後、順調に更新中!?
  • Facebook のGraph API のバージョンが2に。
2014年5月以降に登録したアプリは、特に注意が必要らしい。
特に GraphAPIの方は、かなり影響が大きい様子。

超意訳:4月30日以降に作ったアプリは、必ずGraph APIのバージョン2にしないとダメなんだ。4月30日前に存在していたアプリはGraph APIのバージョン2と1の両方使えてたさ!
http://stackoverflow.com/questions/23400204/get-facebook-friends-with-graph-api-v-2-0

コメント欄にも記載がありますが、過去のサンプルコードとかが、かなり使えなくなったかもしれないですね。
PHP SDKも修得するには結構厳しいことになってます。新しいバージョンのPHP SDKのサンプルを公開してくれる海外のプログラマーもいたのですが、5月下旬にはVersion4.0.5になり・・・。
4系が落ち着くまで、過去の3系を使った方がよさそうです。ひとまず、サンプルコードを書いてみます。






Composerは使ってません。
使ってないので、適宜 https://github.com/facebook/facebook-php-sdk-v4 からSDKをダウンロードして、 /srcの中のFacebookフォルダを適切な場所に保存してくださいね。
<?php
session_start();

// added in v4.0.5
require_once( 'Facebook/FacebookHttpable.php' );
require_once( 'Facebook/FacebookCurl.php' );
require_once( 'Facebook/FacebookCurlHttpClient.php' );

// added in v4.0.0 
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' );

// added in v4.0.5
use Facebook\FacebookHttpable;
use Facebook\FacebookCurl;
use Facebook\FacebookCurlHttpClient;

// added in v4.0.0

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;


FacebookSession::setDefaultApplication('アプリのID','アプリのシークレットキー');

$helper = new FacebookRedirectLoginHelper( 'このPHPファイルのURL' );

try {
  $session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
 
} catch(\Exception $ex) {
  
}

if ($session) {
  try {
//Facebookの公式開発者ページのサンプルではワンラインになってる部分を3行に分けて。
    $request = new FacebookRequest( $session, 'GET', '/me/taggable_friends');
    $response = $request->execute();
    $graphObject = $response->getGraphObject(); 
echo "<pre>";
    echo  print_r( $graphObject, 1 );
echo "</pre>";
  } catch(FacebookRequestException $e) {
    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();
  }
}else{
  $loginUrl = $helper->getLoginUrl();
  echo '<a href="' . $loginUrl . '">Login</a>';
}

?>



Permissionがどうだ~とか、まだ資料を読み切っていないのですが、ひとまず。
r />