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();

    // 在 v4.0.0 中添加
    require_once 'autoload.php';

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

    // 使用 app id 和 secret 初始化 app
    FacebookSession::setDefaultApplication('app-id', 'app-secret');

    // 使用 redirect_uri 的登录助手
    $helper = new FacebookRedirectLoginHelper('http://facebook.local/');

    尝试 {
      $session = $helper->getSessionFromRedirect();
    } 捕捉(FacebookRequestException $ex){
      // 当 Facebook 返回错误时
    } 捕捉(异常 $ex ) {
      // 当验证失败或其他本地问题时
    }

    // 看看我们是否有会话
    if ( isset( $session ) ) {

      print_r($session->getToken());

      // 图 api 请求用户数据
      $request = new FacebookRequest($session, 'GET', '/me');
      $response = $request->execute();
      // 获取响应
      $graphObject = $response->getGraphObject();

      // 打印数据
      回声'
' . print_r($graphObject, 1)。'
'; } 别的 { $参数 = 数组( '范围' => 'manage_pages, read_insights, read_stream' ); // 显示登录地址 回声'getLoginUrl($params)。'">登录'; }

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

非常感谢您的帮助。

提前致谢。阿克塞尔

4

1 回答 1

0

将您的代码更改为:

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

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

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

于 2014-08-25T10:26:49.033 回答