1
require_once($_SERVER['DOCUMENT_ROOT'] . '/facebook-php-sdk/facebook.php');

$facebook = new Facebook(array(
  'appId'  => FB_MAIN_APP_API_ID,
  'secret' => FB_MAIN_APP_SECRET
));

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

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

以上是我用来获取我的应用程序的 Facebook 详细信息的代码。在我的本地主机中,这工作正常,它提供了我的 Facebook 电子邮件、用户 ID。将其上传到实时服务器后,此功能无法正常工作,并且没有提供我的 Facebook 详细信息。我检查了 Facebook 应用程序 ID,它是正确的。

我无法弄清楚为什么它不能在实时站点中工作,因为它在我的本地主机中工作。请帮我解决一下这个。谢谢你。

4

3 回答 3

0

Have you checked you have the correct URL in the configuration of your app in Facebook?

I have this piece of code to my FB apps and work properly, could you try it?

$session = $this->facebook->getUser();
if ($session) {
    $logoutUrl = $this->facebook->getLogoutUrl();
    try {
        $data['uid'] = $this->facebook->getUser();
        $me = $this->facebook->api($session);
        $data['me'] = $me;
    } catch (FacebookApiException $e) {
        error_log($e);
    }
} else {
    $loginUrl = $this->facebook->getLoginUrl(
        array(
            'scope' => 'publish_stream, user_about_me, email',
            'redirect_uri' => 'YOUR URL',
            'canvas' => 1,
            'fbconnect' => 0,
            'display' => 'page',
        ));

}

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

$this->load->view('MY VIEW', $data);
于 2012-10-05T07:02:03.253 回答
0

要获取用户ID,用户需要授予权限

$user_id = $facebook->getUser();
 echo $uid;

if($user_id){
  try {
    $user_profile = $facebook->api('/me');

  } catch (FacebookApiException $e) {
    error_log($e);
    $user_id = null;
  }
}else{
    $login_url = $facebook->getLoginUrl();
    echo("<br>login url=".$login_url);
};

在用户授予权限后检查 login_url,您可以访问用户 id。

尝试这个

于 2012-10-05T07:55:15.833 回答
0

我认为问题出在您在服务器上使用的应用程序中。因此,请尝试使用与您的 localhost 相同的应用程序,并在 login 和 logout url 而不是 localhost use 中使用$_SERVER['HTTP_HOST']

例子 :

$session->fb_logout = $facebook->getLogoutUrl(array('next' => "http://" . $_SERVER['HTTP_HOST'] . "/path/to/logout"));

首先检查$user_profile = $facebook->api('/me');显示的内容。只是print_r变量$user_profile

前任 :

    $user_profile = $facebook->api('/me');
    print_r($user_profile);
    exit;

如果它显示为空白,那么它肯定会进入 catch 块。然后在 catch 块中写入以下内容。

    print_r($e);
    exit;
于 2012-10-05T06:49:56.783 回答