2015-07-26 4 views
0

Я создаю SDK facebook v2.3 в CI 2, но я только что получил подробную информацию о имени и идентификаторе, мне нужна подробная информация электронной почты от входа пользователя.Facebook php SDK Просто отобразите Имя и ID

Результат print_r является

Array ([имя] => Alan El-Nino Мальмстин [ID] => 1111310922216558)

У меня есть разрешение на создание электронной почты, но до сих пор не работает

public function FBLogin() 
{ 
$this->load->library('facebook'); 
$login_url = $this->facebook->login_url(); 
$get_user = $this->facebook->get_user(); 
if($get_user){ 
    //echo $this->facebook->get_email(); 
    print_r($get_user); 
}else{ 
    redirect('login_url'); 
} 

И Библиотека Facebook.php

  <?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
     if (session_status() == PHP_SESSION_NONE) { 
      session_start(); 
     } 
     // Autoload the required files 
     require_once(APPPATH . 'libraries/Facebook/autoload.php'); 
     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/FacebookAuthorizationException.php'); 
     require_once('Facebook/GraphObject.php'); 
     require_once('Facebook/GraphSessionInfo.php'); 

     require_once('Facebook/Entities/AccessToken.php'); 
     require_once('Facebook/Entities/SignedRequest.php'); 

     require_once('Facebook/HttpClients/FacebookHttpable.php'); 
     require_once('Facebook/HttpClients/FacebookCurl.php'); 
     require_once('Facebook/HttpClients/FacebookCurlHttpClient.php'); 

     use Facebook\FacebookRedirectLoginHelper; 
     use Facebook\FacebookSession; 
     use Facebook\FacebookRequest; 
     class Facebook { 
      var $ci; 
      var $helper; 
      var $session; 
      var $permissions; 
      public function __construct() { 
      $this->ci =& get_instance(); 
      $this->permissions = $this->ci->config->item('permissions', 'facebook'); 
      // Initialize the SDK 
      FacebookSession::setDefaultApplication($this->ci->config->item('api_id', 'facebook'), $this->ci->config->item('app_secret', 'facebook')); 
      $this->helper = new FacebookRedirectLoginHelper($this->ci->config->item('redirect_url', 'facebook')); 
      if ($this->ci->session->userdata('fb_token')) { 
       $this->session = new FacebookSession($this->ci->session->userdata('fb_token')); 
       // Validate the access_token to make sure it's still valid 
       try { 
       if (! $this->session->validate()) { 
        $this->session = null; 
       } 
       } catch (Exception $e) { 
       // Catch any exceptions 
       $this->session = null; 
       } 
      } else { 
       // No session exists 
       try { 
       $this->session = $this->helper->getSessionFromRedirect(); 
       } catch(FacebookRequestException $ex) { 
       // When Facebook returns an error 
       } catch(Exception $ex) { 
       // When validation fails or other local issues 
       } 
      } 
      if ($this->session) { 
       $this->ci->session->set_userdata('fb_token', $this->session->getToken()); 
       $this->session = new FacebookSession($this->session->getToken()); 
      } 
      } 
      /** 
      * Returns the login URL. 
      */ 
      public function login_url() { 
      return $this->helper->getLoginUrl($this->permissions); 
      } 
      /** 
      * Returns the current user's info as an array. 
      */ 
      public function get_user() { 
      if ($this->session) { 
       /** 
       * Retrieve User’s Profile Information 
       */ 
       // Graph API to request user data 
       $request = (new FacebookRequest($this->session, 'GET', '/me'))->execute(); 
       // Get response as an array 
       $user = $request->getGraphObject()->asArray(); 
       return $user; 
      } 
      return false; 
      } 
     } 
+0

Прежде всего, проверьте, действительно ли ваше приложение _using_ v2.3 - посмотрите, какую версию API он показывает на первой странице панели приложений. Если это говорит v2.4, то это означает, что вы не можете пойти ни на один «ниже». И это будет означать, что вам нужно прочитать журнал изменений - то, что изменилось в отношении полей, возвращаемых по умолчанию, описано там. https://developers.facebook.com/docs/apps/changelog#v2_4_changes – CBroe

+0

И у вас есть _sure_ у вас есть разрешение «электронной почты»? Я не вижу, чтобы вы просили его где-нибудь в вашем коде. – CBroe

ответ

-1

Мне нужно заполнить всю конфигурацию facebook, особенно логотип, адрес электронной почты, URL-адрес полиции конфиденциальности и описание через страницу разработчика API facebook.

1
$request = (new FacebookRequest($this->session, 'GET', '/me/?fields=friends,id,name,birthday,email,picture,gender,location,address,email,hometown'))->execute()->getGraphObject()->asArray(); 

Я думаю, что в новой версии вам необходимо явно их назвать. Также убедитесь, что у вас есть разрешения электронной почты в APP.

0

Другой возможной причиной является использование старого SDK и вызов новой версии API Facebook.

Например. Я использую PHP SDK 3.2.3 версия и вызывается Facebook API 2.6. Я могу получить только ID и Name в качестве возвращаемого значения.

Токен доступа, сгенерированный SDK, может только вернуть эти 2 значения. Вы можете использовать графический API и протестировать токен доступа, чтобы удвоить подтверждение, из-за старой версии API.