Facebook应用程序无法检索用户信息

时间:2012-12-25 08:15:07

标签: php facebook-graph-api

我刚刚使用Facebook PHP SDK构建了一个应用程序并进行了设置。我正在测试它,虽然我从我的个人资料中显示图像,但是请求的用户信息没有显示出来。以下是结果的屏幕截图 screenshot of the result

这是我上传到服务器的php代码。请注意,App ID和Secret已从此处删除。

<?php

require ('src/facebook.php');

$app_id = " "; //has been removed
$secret = " "; //has been removed
$app_url = "http://apps.facebook.com/instahomework/";

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
  'appId'  => $app_id,
  'secret' =>  $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;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(); 
}
// This call will always work since we are fetching public data.
$naitik = $facebook->api('/naitik');

?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
    <title>php-sdk example 1 - user login and authorisation</title>
    <style>
        body { font-family: Helvetica, Verdana, Arial, sans-serif; }
        a { text-decoration:none; }
        a:hover { text-decoration:underline; }
    </style>
</head>
<body>
<pre>
<?php print_r($_REQUEST); ?>
</pre>
    <?php if ($user) { ?>
        <h2>Welcome</h2>
        <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"><br/>
        <a href="<?php echo $link; ?>"><?php echo $name; ?></a><br/>
        <br/>
        Gender : <?php echo $gender; ?><br/>
        Locale : <?php echo $locale; ?><br/>
        Username : <?php echo $username; ?><br/>
    <?php } else { ?>
        <strong><em>You have not granted this App permission to access your data. Redirecting to permissions request...</em></strong>
<?php } ?>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

您应该用以下代码替换HTML代码:

    <h2>Welcome</h2>
    <img src="https://graph.facebook.com/<?php echo $user; ?>/picture"><br/>
    <a href="<?php echo $user_profile['link']; ?>"><?php echo $user_profile['name']; ?></a><br/>
    <br/>
    Gender : <?php echo $user_profile['gender']; ?><br/>
    Locale : <?php echo $user_profile['locale']; ?><br/>
    Username : <?php echo $user_profile['username']; ?><br/>

因为这行代码要求您提供所需的“用户信息”:

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

并存储到$user_profile数组中。

另一种解决方法(但不推荐)是使用extract()通过添加以下代码行将数据从facebook提取到全局变量范围中:

extract($user_profile);