无法从Facebook API检索朋友数据

时间:2013-09-03 07:23:35

标签: php facebook-graph-api facebook-php-sdk

我想:

使用朋友信息从用户检索朋友列表:

  • 位置
  • 教育
  • 名称
  • 个人资料照片

问题是给出的标准权限只有朋友个人资料图片和名称。我用它来获取其他信息:

$params = array(
    'scope' => 'email, friends_likes, user_about_me, friends_about_me, friends_location, friends_website, friends_work_history, friends_education_history'
);

$loginUrl = $facebook->getLoginUrl($params);

}

所以现在当我登录我的页面时,Facebook会问我是否愿意将这些权限授予应用程序,这是一个好兆头。

问题是我仍然无法弄清楚如何获取信息。当我尝试做的时候

print_r($friends);

print_r($friends["data");

我仍然只是得到一个名字和ID的数组。

为什么我没有看到额外的信息?

这不是完整的代码,但很多(大多数来自Facebook GitHub主帐户的example.php):

<?php
    if ($user):
        echo "Name: " . $user_profile['name']; ?> <br />
    <?php echo "Location: " . $user_profile['location']['name']; ?> <br />
    <?php echo "Bio: " . $user_profile['bio']; ?> <br />

    <?php
        foreach($user_profile['work'] as $work) {
            echo "Work: " . $work['employer']['name'];?><br />
    <?php   echo "Position: " . $work['position']['name'];?><br />
    <?php
        }
    ?>

    <img src="https://graph.facebook.com/<?php echo $user; ?>/picture?type=large">

    <h3>Your User Object (/me)</h3>
    <pre><?php
    print_r($friends);
    ?></pre>

    <?php
        echo '<ul>';
        foreach ($friends["data"] as $value) {
            echo '<li>';

            echo '<div class="pic">';
            echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture?type=large"/>';
            echo '</div>';
            echo '<div class="picName">'.$value["name"].'</div>';
            echo '<div class="location">'.$value["location"]["name"];
            echo '<div class="bio">'.$value["bio"];

            echo '</div>';
            echo '</li>';
        }
        echo '</ul>';
    ?>

API调用(注意我只是为了测试而设置$权限,以确保我得到它,并且它们正在显示)。

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

1 个答案:

答案 0 :(得分:0)

您对/me/friends的API调用不正确。您需要执行以下操作:

$friends = $facebook->api('me/friends?fields=birthday,location,about...');

您需要在API调用中添加您需要的额外字段作为参数。我在上面的示例中添加了一些内容,但您需要添加剩余的内容。