2016-08-03 15 views
1

Facebook Connectへの接続を確立しようとしましたが、処理がうまくいって、ユーザー名とIDを取得できますが、$権限で送信された情報は考慮されません。私は事を忘れてしまったでしょうか? 私はFacebookの開発者が入手できる文書に従った。 私は最新バージョンを使用します。PHP SDK 5.2Facebookの接続許可PHP SDK

public function facebook() { 
    session_start(); 
    require '../Vendor/autoload.php'; 
    $fb = new Facebook\Facebook([ 
     'app_id' => 'ID_APP', 
     'app_secret' => 'SECRET_APP', 
     'default_graph_version' => 'v2.5', 
    ]); 
    $helper = $fb->getRedirectLoginHelper(); 
    $permissions = ['email', 'user_location','user_birthday']; // optional 
    $loginUrl = $helper->getLoginUrl('http://localhost/Weade/connexion/check_facebook', $permissions); 

    $this->redirect($loginUrl); 


} 

 

public function check_facebook() { 
    session_start(); 
    require '../Vendor/autoload.php'; 
    $fb = new Facebook\Facebook([ 
     'app_id' => 'APP_ID', 
     'app_secret' => 'APP_SECRET', 
     'default_graph_version' => 'v2.5', 
    ]); 
    $helper = $fb->getRedirectLoginHelper(); 
    try { 
     $accessToken = $helper->getAccessToken(); 
    } catch(Facebook\Exceptions\FacebookResponseException $e) { 
     // When Graph returns an error 
     echo 'Graph returned an error: ' . $e->getMessage(); 
     exit; 
    } catch(Facebook\Exceptions\FacebookSDKException $e) { 
     // When validation fails or other local issues 
     echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
     exit; 
    } 

    if (isset($accessToken)) { 
     // Logged in! 
     $_SESSION['facebook_access_token'] = (string) $accessToken; 

     // Now you can redirect to another page and use the 
     // access token from $_SESSION['facebook_access_token'] 
    } 

    if($this->Session->read('facebook_access_token')) { 
     $fb->setDefaultAccessToken($this->Session->read('facebook_access_token')); 

     try { 
      $response = $fb->get('/me'); 
      $userNode = $response->getGraphUser(); 
      debug($userNode); 


     } catch(Facebook\Exceptions\FacebookResponseException $e) { 
      // When Graph returns an error 
      echo 'Graph returned an error: ' . $e->getMessage(); 
      exit; 
     } catch(Facebook\Exceptions\FacebookSDKException $e) { 
      // When validation fails or other local issues 
      echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
      exit; 
     } 

    } 

} 

おかげで、

答えて

0
$response = $fb->get('/me?fields=emai,user_location,user_birthday'); 

あなたはあなたで取得したいフィールドを定義する必要がありますがリクエスト、たとえば/ me?fields = ID、名前、Eメール、誕生日の代わりに/

V2.4にノードとエッジ、モバイルネットワーク上でのパフォーマンスを改善しようとするには https://developers.facebook.com/docs/apps/changelog#v2_4

を参照してくださいあなたは明示的にあなたがあなたのGETリクエストのために必要なフィールド(複数可)を要求することが必要です。たとえば、GET /v2.4/me/feedにはデフォルトでお気に入りやコメントが含まれなくなりましたが、GET /v2.4/me/feed?fields=comments,likesはデータを返します。詳細については、特定のフィールドを要求する方法に関するドキュメントを参照してください。

+0

ありがとうございました!私は1つの生年月日を除くすべての希望の値を回復しています。私はuser_birthdayが私にエラーと誕生日を返します。 **エラーuser_birthday ** 'グラフがエラーを返しました:(#100)は、ノードタイプ(ユーザー)' **誕生日** '\アプリ\コントローラ\がUserControllerに(user_birthday)存在しないフィールドにアクセスしようとしました.PHP(ライン148) オブジェクト(Facebookの\ GraphNodes \ GraphUser){ \t [保護]アイテム=>アレイ( \t \t 'ID' => 'ID_USER_FACEBOOK' \t) } ' なぜ誕生日は表示されませんか? はあなただけ – Darkh

+0

感謝します'$ response = $ fb-> get( '/ me?fields = birthday'); $ user = $ response-> getGraphUser(); デバッグ($ユーザー); '' 私はIDのみ –

+0

https://developers.facebook.com/docs/graph-api/reference/user –