我的客户坚持使用我们自己的布局和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();
?>
答案 0 :(得分:1)
是的,使用cURL是不可能的。您永远无法访问cookie。