簡體   English   中英

Facebook php SDK僅顯示名稱和ID

[英]Facebook php SDK Just display Name and ID

我在CI 2中創建了SDK facebook v2.3,但我只獲得了名稱和ID用戶詳細信息,我需要用戶登錄時提供電子郵件詳細信息。

print_r的結果是

數組([name] => Alan El-nino Malmsteen [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;
          }
        }
$request = (new FacebookRequest($this->session, 'GET', '/me/?fields=friends,id,name,birthday,email,picture,gender,location,address,email,hometown'))->execute()->getGraphObject()->asArray();   

我認為在新版本中,您需要顯式調用這些。 另外,請確保您具有APP中的電子郵件權限。

另一個可能的原因是,如果您使用舊的SDK並調用新的Facebook API版本。

例如。 我正在使用PHP SDK 3.2.3版本,並調用Facebook API 2.6 我只能獲取ID和Name作為返回值。

SDK生成的訪問令牌只能取回這兩個值。 您可以使用圖形API並測試訪問令牌以再次確認是否是因為API版本較舊。

我需要通過facebook API開發人員頁面填寫所有facebook配置,特別是徽標,電子郵件,隱私警察網址和說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM