Facebook图形搜索API


Facebook Graph search API

背景:
我是一位公众人物的雇员,他经常在脸书上冒充骗子。我将通过每天在脸书上搜索脚本并报告任何新用户和页面的名字,自动检查脸书是否有新的骗局。我正在修改我几年前创建的一个旧FB应用程序来运行这个过程。

问题:
我注意到我可以用我的应用程序在facebook的图形api上搜索"页面",但"用户"返回时显示:"致命错误:未捕获OAuthException:请求此资源需要用户访问令牌。"我认为这是权限错误,所以我尝试添加一个&Access_Token=具有来自的所有权限(https://developers.facebook.com/tools/explorer)到URL,但运气不佳。

这是我的PHP脚本:

require '../src/facebook.php';<BR>
$facebook = new Facebook(array(
'appId' => '**I_removed_this_code**',
'secret' => '**I_removed_this_code**'));
$access_token = $facebook->getAccessToken();
$user = $facebook->getUser();
if ($user) {
  try {
    $user_profile = $facebook->api('/me');<BR>
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
$fb_response = $facebook->api('/search?q=**Public_Figure_Name**&type=page'); //<--change this to user and it doesnt work
print_r(array_values($fb_response));

基本问题是,只有应用程序可以访问的用户要么是该应用程序的用户,要么是(给予适当的朋友权限)该应用程序用户的朋友。

但是,如果您使用SSO令牌,则"您"将拥有一个用户令牌,并且可以执行图形搜索。

PS。我本想把它作为一个评论来添加,但我的代表还不够高。

如果我在图形资源管理器中尝试以下操作,它可以正常工作:

/search?q=Tom%20Cruise&type=user

https://developers.facebook.com/tools/explorer?method=GET&路径=搜索%3Fq%3Tom%2520销毁%26type%3User&版本=v2.2

搜索API记录在https://developers.facebook.com/docs/graph-api/using-graph-api/v2.2#search它准确地描述了您的行为(页面搜索和用户搜索之间的区别)。