2015-06-29 18 views
-1

我試圖可以呈現用戶的城市,州,郵政編碼的Facebook登錄。PHP的Facebook的圖形API獲取用戶的城市,州,郵編

下面是代碼,誰能告訴我哪裏出了問題..

我使用Facebook的圖形API(PHP SDK V4.0)

<?php 

    require_once('lib/Facebook/FacebookSession.php'); 
    require_once('lib/Facebook/FacebookRequest.php'); 
    require_once('lib/Facebook/FacebookResponse.php'); 
    require_once('lib/Facebook/FacebookSDKException.php'); 
    require_once('lib/Facebook/FacebookRequestException.php'); 
    require_once('lib/Facebook/FacebookRedirectLoginHelper.php'); 
    require_once('lib/Facebook/FacebookAuthorizationException.php'); 
    require_once('lib/Facebook/GraphObject.php'); 
    require_once('lib/Facebook/GraphUser.php'); 
    require_once('lib/Facebook/GraphSessionInfo.php'); 
    require_once('lib/Facebook/Entities/AccessToken.php'); 
    require_once('lib/Facebook/HttpClients/FacebookCurl.php'); 
    require_once('lib/Facebook/HttpClients/FacebookHttpable.php'); 
    require_once('lib/Facebook/HttpClients/FacebookCurlHttpClient.php'); 

/* USE NAMESPACES */ 

    use Facebook\FacebookSession; 
    use Facebook\FacebookRedirectLoginHelper; 
    use Facebook\FacebookRequest; 
    use Facebook\FacebookResponse; 
    use Facebook\FacebookSDKException; 
    use Facebook\FacebookRequestException; 
    use Facebook\FacebookAuthorizationException; 
    use Facebook\GraphObject; 
    use Facebook\GraphUser; 
    use Facebook\GraphSessionInfo; 
    use Facebook\FacebookHttpable; 
    use Facebook\FacebookCurlHttpClient; 
    use Facebook\FacebookCurl; 


/*PROCESS*/ 

    //1.Stat Session 
    session_start(); 
    //check if users wants to logout 
    if(isset($_REQUEST['logout'])){ 
     unset($_SESSION['fb_token']); 
    } 

    //2.Use app id,secret and redirect url 
    $app_id = ''; 
    $app_secret = ''; 
    $redirect_url='http://demo.domain.com/apps/fblogin/'; 
    //3.Initialize application, create helper object and get fb sess 
    FacebookSession::setDefaultApplication($app_id,$app_secret); 
    $helper = new FacebookRedirectLoginHelper($redirect_url); 
    $sess = $helper->getSessionFromRedirect(); 
    //check if facebook session exists 
    if(isset($_SESSION['fb_token'])){ 
     $sess = new FacebookSession($_SESSION['fb_token']); 
    } 
    //logout 
    $logout = 'http://demo.domain.com/apps/fblogin?logout=true'; 
    //4. if fb sess exists echo name 
     if(isset($sess)){ 
      //store the token in the php session 
      $_SESSION['fb_token']=$sess->getToken(); 
      //create request object,execute and capture response 
      $request = new FacebookRequest($sess,'GET','/me'); 
      // from response get graph object 
      $response = $request->execute(); 
      $graph = $response->getGraphObject(GraphUser::classname()); 
      // use graph object methods to get user details 
      $name = $graph->getName(); 
      $id = $graph->getId(); 
      $image = 'https://graph.facebook.com/'.$id.'/picture?width=100'; 
      $email = $graph->getProperty('email'); 
      $gender = $graph->getProperty('gender'); 
      $city = $this->getProperty('city'); 
      //$state = $this->getProperty('state'); 
      //$country = $graph->getProperty('country'); 
      //$zip = $this->getProperty('zip'); 


      if (isset($graph->getProperty['phone'])){ 
       $phone = $graph->getProperty['phone']; 
      } 
      /*------------------------------------------*/ 
      echo "Your Name is $name <br><Br>"; 
      echo "Your Email is $email <br><Br>"; 
      echo "Your Gender is $gender <br><Br>"; 
      echo "Your Phone is $phone <br><Br>"; 
      echo "<img src='$image' /><br><br>"; 
      echo "<a href='".$logout."'><button>Logout</button></a>"; 
      echo "Your City is $city <br><Br>"; 
      //echo "Your State is $state <br><Br>"; 
      //echo "Your Country is $country <br><Br>"; 
      //echo "Your Zip is $zip <br><Br>"; 
      /*------------------------------------------*/ 

     }else{ 
      //else echo login 
      echo '<a href="'.$helper->getLoginUrl(array('email')).'" >Login with facebook</a>'; 
     } 

我越來越登錄後黑屏...

+0

使用'GraphObject'的'getPropertyNames'方法來查看它實際包含的屬性。 – CBroe

回答

相關問題