2016-08-03 123 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,姓名,電子郵件,生日而不是/我

https://developers.facebook.com/docs/apps/changelog#v2_4

,試圖提高移動網絡的性能,節點和V2.4邊,您需要明確要求您需要的字段(S)爲您的GET請求。例如,GET /v2.4/me/feed默認不再包含喜歡和評論,但GET /v2.4/me/feed?fields=comments,likes將返回數據。有關更多詳細信息,請參閱有關如何請求特定字段的文檔。

+0

謝謝!我正在恢復除了一個,出生日期之外的所有期望的值,我嘗試user_birthday給我一個錯誤,並且生日ca給我一個基本的表。 **錯誤user_birthday ** '格拉夫返回錯誤:(#100)試圖在節點類型訪問不存在的字段(user_birthday)(用戶)' ** **生日' \ APP \控制器\ UsersController .PHP(線148) 對象(臉譜\ GraphNodes \ GraphUser){ \t [保護]項=>數組( \t \t 'ID'=> 'ID_USER_FACEBOOK' \t) } ' 任何想法爲什麼不出現生日? 謝謝 – Darkh

+0

嘗試生日只有 –

+0

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