未获得请求的权限(Facebook Graph PHP SDK 4)

时间:2014-08-25 08:07:14

标签: facebook-sdk-4.0

我正在使用PHP 4 SDK for Facebook Graph API从指定的Facebook页面获取数据。

因此,我们有一个拥有此页面管理员权限的测试用户。 获取公开个人资料数据没有问题,但是当我尝试获取数据洞察数据时,例如有了这个要求

/{post-id}?fields=shares,likes.summary(true),comments.summary(true)

我没有获得共享值,因为请求所需权限('manage_pages,read_insights,read_stream')失败。

当我调试访问令牌并将其插入Facebook Graph API Explorer时,我发现了这一事实,只说'public_profile'权限。

虽然我可以直接将相同的请求插入到我的图形资源管理器中并获得正确的响应,但我不会使用我的PHP脚本。

现在我的脚本看起来像这样:


    ob_start();
    session_start();

    // added in v4.0.0
    require_once 'autoload.php';

    use Facebook\FacebookSession;
    use Facebook\FacebookRedirectLoginHelper;
    use Facebook\FacebookRequest;
    use Facebook\FacebookResponse;
    use Facebook\FacebookSDKException;
    use Facebook\FacebookRequestException;
    use Facebook\FacebookAuthorizationException;
    use Facebook\GraphObject;
    use Facebook\Entities\AccessToken;
    use Facebook\HttpClients\FacebookCurlHttpClient;
    use Facebook\HttpClients\FacebookHttpable;

    // init app with app id and secret
    FacebookSession::setDefaultApplication('app-id', 'app-secret');

    // login helper with redirect_uri
    $helper = new FacebookRedirectLoginHelper('http://facebook.local/');

    try {
      $session = $helper->getSessionFromRedirect();
    } catch( FacebookRequestException $ex ) {
      // When Facebook returns an error
    } catch( Exception $ex ) {
      // When validation fails or other local issues
    }

    // see if we have a session
    if ( isset( $session ) ) {

      print_r($session->getToken());

      // graph api request for user data
      $request = new FacebookRequest( $session, 'GET', '/me' );
      $response = $request->execute();
      // get response
      $graphObject = $response->getGraphObject();

      // print data
      echo '
' . print_r( $graphObject, 1 ) . '
'; } else { $params = array( 'scope' => 'manage_pages, read_insights, read_stream' ); // show login url echo 'getLoginUrl($params) . '">Login'; }

有没有人知道我做错了什么?

我非常感谢你的帮助。

提前致谢。 阿克塞尔

1 个答案:

答案 0 :(得分:0)

将您的代码更改为:

  $scope = array( 'manage_pages', 'read_insights', 'read_stream' );

  // show login url
  echo '<a href="'. $helper->getLoginUrl( $scope ) . '">Login</a>';

范围是具有权限的数组。登录URL可从$helper

访问