0

我已經使用了Facebook的PHP SDK賬戶價值,我想在另一個文件中的值,所以我給了重定向路徑,登錄後,會在頁面上,但$ USER是空白,當我刷新頁面時,我得到了值。我的代碼是像下面 從哪裏登錄頁面調用:獲取Facebook在一個特定的文件

$facebook = new Facebook(array('appId' =>FB_APP_ID ,'secret' => FB_APP_SECRET)); 
                $scope='email,user_birthday,user_location,user_work_history,user_about_me,user_hometown'; 
               $parameters=array("redirect_uri"=>"http://www.xyz.com//test.php","scope"=>$scope); 
               $login_url= $facebook->getLoginUrl($parameters); 

和test.php的是像下面

$facebook = new Facebook(array(
     'appId' => '224402951020359' , 
     'secret' => 'd2731260cdd7425dc11eee5f265a3dee' 

     )); 

     $user = $facebook->getUser(); 

     if ($user) { 
      try { 
      // Proceed knowing you have a logged in user who's authenticated. 
      $user_data = $facebook->api('/me'); 
      } catch (FacebookApiException $e) { 

      error_log($e); 
      $user = null; 
      } 
     } 

     print_r($user_data); 

我怎樣才能在第一時間的價值。

回答

0

在您的網頁test.php的,把一個測試!$用戶時,如果爲true,則再次重定向到loginurl ...像下面是我在我的代碼,以避免同樣的問題做。

$loginUrl = $facebook->getLoginUrl(
     array(
      'scope' => 'email,publish_stream,user_birthday,user_location' 
     ) 
); 

if ($user) { 
    try { 
    //get user basic description 
    $userInfo = $facebook->api("/$user"); 
    $fb_access_token = $facebook->getAccessToken(); 
    } catch (FacebookApiException $e) { 
    //you should use error_log($e); instead of printing the info on browser 
    error_log('Sharebox: '.$e); // d is a debug function defined at the end of this file 
    $user = null; 
    } 
} 

if (!$user) { 
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
    exit; 
} 

希望這會有所幫助。