【问题标题】:Get Facebook Page Likes in PHP (after FQL depreciation)在 PHP 中获取 Facebook 页面喜欢(FQL 折旧后)
【发布时间】:2016-12-27 03:33:10
【问题描述】:

我曾经能够通过 Facebook 上的单个 FQL 查询 URL 获得页面喜欢。但截至上周,他们将其关闭。要求使用他们的 SDK 或 API,但是我的系统会扫描我的用户的 facebook 页面并显示他们喜欢的页面。

有什么办法可以解决这个问题,就像我使用 SDK 或 API 一样。对于每个页面的每个请求,我都需要一个应用程序。

谢谢。

注意: 我尝试使用标头和用户代理对file_get_contents() 不满意,并尝试通过手机请求无济于事。

代码:

$url = "http://m.facebook.com/pagename/";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7\r\n" 
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);

print_r($file);

结果:

【问题讨论】:

  • 对于每个用户,您都必须获取 access_token 才能通过 facebook api 获取用户信息。形成api响应,你现在就可以得到你想要的。
  • “但是我的系统会扫描我用户的 Facebook 页面” – 未经 Facebook 事先书面同意,抓取他们的页面违反了他们的服务条款,所以你一直在做的不是已经允许了。使用他们的 API 是解决此问题的正确方法。

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


【解决方案1】:

不知道为什么这个问题被否决。以前我们使用 fql 来获取喜欢/分享的数量,它在 2016 年 8 月 7 日之后贬值。我们可以使用这个技巧来获得点赞数。

只需向 facebook 发出 curl 请求并解析结果。

   $domain='stackoverflow.com';  
   $protocol='http://';  
   $orgin=$protocol.$domain.'/';
   $url='http://stackoverflow.com';

   $param=array('action'=>'like','app_id'=>'','channel'=>'http://staticxx.facebook.com/connect/xd_arbiter/r/lUqP5iIjiw6.js?version=42#cb=f178d9075b06a6a',
   'domain'=>$domain,'orgin'=>$orgin,'relation'=>'parent.parent','container_width'=>0,'href'=>$url,'layout'=>'button_count','locale'=>'en_GB','sdk'=>'joey',
   'share'=>false,'show_faces'=>true,'size'=>'large');

   $fb_url='https://www.facebook.com/v2.6/plugins/like.php?';

   $ch= curl_init();
   $options=array( 
   CURLOPT_URL => $fb_url.http_build_query($param),
   CURLOPT_FRESH_CONNECT => 1,
   CURLOPT_RETURNTRANSFER => 1, 
   CURLOPT_FORBID_REUSE =>1,
   CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01;Windows NT 5.0)",
   CURLOPT_SSL_VERIFYHOST=> 0,
   CURLOPT_SSL_VERIFYPEER=> 0, 
   CURLOPT_REFERER=>$orgin,
   CURLOPT_CONNECTTIMEOUT=> 10,
   CURLOPT_TIMEOUT=>40
  );

  curl_setopt_array($ch,$options);
  $fb_html=curl_exec($ch);

  if(curl_errno($ch)>0){ #checks any curl error
   $fbc='';
  }else{ 
   $fb_html=preg_replace('/\s+/', '',$fb_html);
   preg_match('/<span[^>]*id="u_0_3">(.*?)<\/span>/sm',$fb_html,$count);
   $fbc=$count[1];  
  }

  curl_close($ch);
  echo "Like count:$fbc";

详细解释查看此帖:get facebook like/share count after fql depreciation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多