2012-08-07 107 views
0

enter image description here的Facebook的getUser總是返回0

// Function for facebook login 
    function facebook_login() { 
     $output = array(); 
     // Create facebook object for user login. 
     $config = array(); 
     $config['appId' ] = 'XXXXXXX'; 
     $config['secret'] = 'XXXXXXX'; 
     $config['cookie'] = true; 

     session_start(); 
     $code = $_GET['code']; 

     $facebook_user = null; 

    // Create the facebook user object 
     $facebook = new Facebook(array(
     'appId' => $config['appId'], 
     'secret' => $config['secret'], 
     'cookie' => $config['cookie'], 
    )); 


     // Get User ID 
     $facebook_user = $facebook->getUser(); 

    // If facebook user id not equal to 0 
     if ($facebook_user) { 
     try { 
      // Proceed knowing you have a logged in user who's authenticated. 
      $user_profile = $facebook->api('/me'); 
      $output['facebookurl'] = 'user/register'; 

      return $output; // Returns a result. 
     } 
     catch (FacebookApiException $e) { 
      drupal_set_message($e, 'error'); 
      $facebook_user = null; 
     } 
     } 
     else { 
     $facebook_params = array(
      'scope' => 'email', 
      'redirect_uri' => 'http://localhost/mywebsite', 
      'display' => 'popup', 
      'code' => $code, 
     ); 

     $output['facebookurl'] = $facebook->getLoginUrl($facebook_params); // Returns the facebook login url as result. 
     } 
    } 

這裏是Facebook登錄我的PHP代碼。某些事件會調用facebook_login()函數,並會根據$output結果進行一些處理。

問題是$facebook_user總是0,即我總是得到getLoginUrl作爲輸出。我已經嘗試了與此問題相關的stackoverflow中的所有答案,但沒有人幫助我。

我在我的本地主機上測試這個應用程序,並在facebook應用程序設置中將網站URL設置爲http://localhost/mywebsite

請幫忙!

+0

您是否啓用了離線訪問權限? Plus是您的重定向網址在應用程序配置中相同嗎? – AlphaMale 2012-08-07 06:46:12

+0

謝謝你,在我的應用程序中,我已啓用'刪除offline_access權限設置'。是的,正如問題中提到的,網站URL與'redirect_uri'相同。 – subhojit777 2012-08-07 06:52:09

+0

您不需要'offline_access'權限。 – 2012-08-07 11:45:52

回答

1

當您運行此代碼時,您是否登錄Facebook並在登錄URL後面?您只有在用戶添加了應用程序並且在您的網站上設置了Cookie後,纔會返回用戶ID。

只要您的FB上的應用程序設置配置爲指向本地主機,在Localhost上運行此功能也將正常工作。

+0

我已經在facebook上傳了我的應用程序設置的屏幕截圖。我沒有指定應用程序域,是否有必要這樣做? – subhojit777 2012-08-07 12:23:50

+0

謝謝。您的設置看起來正確。 'getLoginUrl();'返回什麼? – 2012-08-07 12:49:15

+0

https://www.facebook.com/dialog/oauth?client_id=XXXXX&redirect_uri=http%3A%2F%2Flocalhost%2Fmywebsite&state=87f06f869ba01a25a9a525b607af376c&scope=email – subhojit777 2012-08-07 13:00:56