Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook graph api:page posts调用返回空数据_Php_Facebook_Facebook Graph Api_Facebook Php Sdk - Fatal编程技术网

Php Facebook graph api:page posts调用返回空数据

Php Facebook graph api:page posts调用返回空数据,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,最终,我试图在属于facebook页面所有者的网站上显示一个公共facebook页面提要 我正在使用PHPSDK4.0尝试从GraphAPIv2.2的页面中引入几篇文章 我已经在developers.facebook.com上安装了一个应用程序,我正在使用应用程序id和应用程序机密设置默认应用程序 下面我用来获取访问令牌的方法返回App访问令牌 // Skip these two lines if you're using Composer define('FACEBOOK_SDK_V4_SRC

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

我正在使用PHPSDK4.0尝试从GraphAPIv2.2的页面中引入几篇文章

我已经在developers.facebook.com上安装了一个应用程序,我正在使用应用程序id和应用程序机密设置默认应用程序

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

// 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": [

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

都在文档中,你知道:

权限

  • 查看公共共享帖子需要访问令牌
  • 需要用户访问令牌来检索该用户可见的帖子
  • 检索任何其他帖子都需要页面访问令牌

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

这是否意味着如果不要求每个网站访问者允许应用程序访问,就无法显示页面帖子?您还应该能够创建永久页面访问令牌并将其存储在应用程序中。关于这个话题,这里有很多答案。使用搜索。是的,当然。我需要客户的用户名和密码。否则,我将不得不作为一名经理添加到他们的页面(这完全是我自己的事)。如果我失去了管理,那钥匙就丢了?我在寻找一种更具程序性的方法来解决这个问题。我想问访问者是否想看到Facebook流,这是唯一一种严肃的方式吗?这是不对的。Facebook OAuth从不使用用户名/密码机制。您可以使用每个页面所有者的
管理页面
权限查询
/me/accounts
,然后您将收到页面访问令牌。我一定是做错了,每当我尝试为其他人获取页面访问令牌时,我都会得到一个空数据集。每当我尝试为我的帐户获取它时,它都会起作用,但对于我不管理其Facebook页面的客户来说,这是行不通的。