【问题标题】:FaceBook Facepile Parsed and Displayed but not connected to accountFaceBook Facepile 已解析并显示但未连接到帐户
【发布时间】:2014-08-07 18:55:23
【问题描述】:

我的客户坚持要我们使用我们自己的布局和 CSS 来显示 FaceBook Like-Box 或 FacePile 内容。

为此,下面的代码成功获取并解析了 Facebook 当前正在发送的元素。当然,一旦 FB 更改样式名称或 ID,这将中断。

问题是,当代码在浏览器中加载的 iframe 中本地运行时,如果用户允许,他们的 FaceBook 登录状态会导致 FacePile 被他们“喜欢”相关页面的朋友控制。

当由 cURL 加载时,这不会发生。

我的客户问的是我们是否可以连接到 FaceBook 帐户,同时仍然使用 cURL 进行获取。

我认为这是不可能的,这也是 FaceBook 始终将这些插件实现为 iframe 的原因 - 出于安全和隐私原因,属于 FaceBook 的 cookie 和会话必须由设置它们的域访问。

我说的对吗?我的 cURL 脚本不可能告诉 Facebook 我们想见谁的朋友吗?

<?
$url="https://www.facebook.com/plugins/like_box.php?app_id=&channel=https%3A%2F%2Fs-static.ak.facebook.com%2Fconnect%2Fxd_arbiter%2FoDB-fAAStWy.js%3Fversion%3D41%23cb%3Df3ba86bb28%26domain%3Ddev.mysite.com%26origin%3Dhttps%253A%252F%252Fdev.mysite.com%252Ff1653c73c%26relation%3Dparent.parent&color_scheme=light&header=false&height=241&href=https%3A%2F%2Fwww.facebook.com%2FmyFBPage&locale=en_US&sdk=joey&show_border=false&show_faces=true&stream=false&width=800";

$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.facebook.com'));
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
$content = curl_exec($ch);

echo curl_error($ch);
curl_close($ch);


try { 
$DOM = new DOMDocument(); 
$DOM->loadHTML($content);
$xpath = new DOMXPath($DOM);
$elements= $xpath->query('//li');

$lis = '';

foreach($elements as $element){
    $newdoc = new DOMDocument();
    $cloned = $element->cloneNode(TRUE);
    $newdoc->appendChild($newdoc->importNode($cloned,TRUE));
    $lis .= $newdoc->saveHTML();
}

$elements= $xpath->query('//span[@id="u_0_1"]');

if($elements){
   $youlikethis = $elements->item(0)->nodeValue;
}

$elements= $xpath->query('//span[@id="u_0_4"]');

if($elements){
   $likecount = $elements->item(0)->nodeValue;
}

$elements= $xpath->query("//a[@class='_8o _8r lfloat _ohe']");

$newdoc = new DOMDocument();
$cloned = $elements->item(0)->cloneNode(TRUE);
$newdoc->appendChild($newdoc->importNode($cloned,TRUE));
$userpic = $newdoc->saveHTML();
?>

【问题讨论】:

    标签: php facebook iframe curl xpath


    【解决方案1】:

    是的,使用 cURL 是不可能的。您将永远无法访问 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-21
      • 2014-04-03
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多