facebook php sdk api设置访问用户数据的适当权限

时间:2014-04-29 02:09:26

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

我试图使用php访问和收集基本信息 -

  

用户名,性别,生日,年龄等。

但由于某种原因,我只能获得名称和性别,我得到Undefined index: birthdayage_range

有人可以帮我解决这个问题吗?我是Facebook Graph API的新手,并尝试修改他们为日志记录提供的给定代码。我认为我还不需要访问令牌,因为我在登录网站时尝试获取初始权限。

<?php
include('src\facebook.php');

//$scope = 'username,age_range,birthday,gender';

$config = array(
      'appId'              => 'XXXXXXXXXXXXXXXX',
      'secret'             => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
      'fileUpload'         => false, 
      'allowSignedRequest' => false 
    );

  $facebook = new Facebook($config);
  $user_id = $facebook->getUser();
?>
<html>
  <head></head>
  <body>

  <?php
    if($user_id) {
      try {
            //$user_profile = $facebook->api('/me','GET');
            $user_profile = $facebook->api('/me','GET', array('scope' => 'user_birthday,gender,age_range,name,likes'));
            echo "Name: " .     $user_profile['name'];
            echo " Gender: " . $user_profile['gender'];
            echo " DOB: " .    $user_profile['birthday'];
            echo " Age_Range: " .    $user_profile['age_range'];
      } catch(FacebookApiException $e) {
            $login_url = $facebook->getLoginUrl(); 
            echo 'Please <a href="' . $login_url . '">login.</a>';
            error_log($e->getType());
            error_log($e->getMessage());
      }   
    } else {
      // No user, print a link for the user to login
      $login_url = $facebook->getLoginUrl();
      echo 'Please <a href="' . $login_url . '">login.</a>';
    }
  ?>

  </body>
</html>

也有人可以解释如何获得用户的喜欢,我知道我必须使用Facebook-&gt; api(我/喜欢)指定用户权限,但是我如何访问数组?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

请按照仅官方文档来避免此类错误 -

  1. 您正在将权限范围添加到错误的位置。

  2. 您使用的是错误的权限:gender,age_range,name,likes - 这些权限不是有效权限!

    您需要的权限是:user_likes(对于喜欢),user_birthday(生日); rest只是基本(默认)权限的一部分!

    年龄范围字段也包含在公开个人资料中 - 适用于安装您应用的任何人。

  3. 使用登录代码时,您必须添加scope参数:getLoginUrl()

    $params = array(
      'scope' => 'user_likes, user_birthday'
    );
    $loginUrl = $facebook->getLoginUrl($params);
    

    用户成功授予权限后,您将获得所需的内容!