2012-08-07 110 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