【问题标题】:Facebook graph api: page posts call returns empty dataFacebook graph api:页面帖子调用返回空数据
【发布时间】:2015-03-13 23:49:51
【问题描述】:

最终,我试图在属于 Facebook 页面所有者的网站上显示公共 Facebook 页面提要。

我正在使用 PHP SDK 4.0 尝试从 graph api v2.2 的页面中提取几篇文章。

我在developers.facebook.com 上设置了一个应用程序,我正在使用应用程序ID 和应用程序密码来设置默认应用程序。

我下面用来获取访问令牌的方法返回应用访问令牌。

// Skip these two lines if you're using Composer
define('FACEBOOK_SDK_V4_SRC_DIR', __ROOT__.'/facebook/src/Facebook/');
require __ROOT__ . '/facebook/autoload.php';

session_start();
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\GraphPage;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;

$page_id = "pageID";
$app_id = "appID";
$app_secret = "appSecret";

FacebookSession::setDefaultApplication( $app_id, $app_secret );

// Get access token
$access_token = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id={$app_id}&client_secret={$app_secret}&grant_type=client_credentials");
$access_token = substr($access_token, strpos($access_token, "=") + 1); 

// Start new session
$session = new FacebookSession("$access_token");


// Get the GraphUser object for the current user:

try {
  $request =  new FacebookRequest($session, 'GET', "/{$page_id}/posts");
  $response = $request->execute();
  $graphObject = $response->getGraphObject();
  var_dump($graphObject);
} catch (FacebookRequestException $e) {
  echo $e;
  // The Graph API returned an error
} catch (\Exception $e) {
  // Some other error occurred
}

我的代码和在 URL 中输入这些信息

https://graph.facebook.com/v2.2/pageID/feed?access_token=accessToken

返回

{
   "data": [

   ]
}

有人知道为什么数据集是空的吗? 如何在不要求网站访问者进行身份验证的情况下获取页面的公开帖子?

【问题讨论】:

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


    【解决方案1】:

    这一切都在文档中,你知道的:

    权限

    • 需要访问令牌才能查看公开分享的帖子。
    • 需要用户访问令牌才能检索该人可见的帖子。
    • 需要页面访问令牌才能检索任何其他帖子。

    这意味着应用访问令牌不起作用。您需要用户或页面访问令牌。

    【讨论】:

    • 这是否意味着如果不要求每个网站访问者允许应用访问,就无法显示页面帖子?
    • 您还应该能够创建一个永久的页面访问令牌并将其存储在您的应用程序中。关于这个话题,这里有很多答案。使用搜索。
    • 是的,当然。我需要客户的用户名和密码。或者我将不得不作为经理添加到他们的页面(这完全是头痛)。如果我失去了管理,那么钥匙就丢失了吗?我一直在寻找一种更程序化的方法来解决这个问题。我是认真询问访问者是否想显示 Facebook 流的唯一其他方式?
    • 这不正确。 Facebook OAuth 从不使用用户名/密码机制。您可以使用每个页面所有者的manage_pages 权限查询/me/accounts,然后您将收到页面访问令牌。
    • 我一定做错了,每当我尝试为其他人获取页面访问令牌时,我都会得到一个空数据集。每当我尝试为我的帐户获取它时,它都有效,但对于我不管理他们的 Facebook 页面的客户来说,它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 2022-09-26
    相关资源
    最近更新 更多