FaceBook Facepile已解析并显示但未连接到帐户

时间:2014-08-07 18:55:23

标签: php facebook iframe curl xpath

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

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

问题在于,当代码在浏览器中加载的iframe中本地运行时,如果用户允许,则其FaceBook登录状态会导致FacePile由他们的朋友控制,他们喜欢"喜欢"有问题的页面。

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

我的客户询问的是我们是否可以在使用cURL获取时连接到FaceBook帐户。

我认为这是不可能的,也是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();
?>

1 个答案:

答案 0 :(得分:1)

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