我目前正在尝试获取一些Facebook数据,然后我想在Javascript中访问。具体来说,我试图访问用户朋友的一些特征。 所以我使用file_get_contents将用户的好友列表添加到他的图API API中。 这为我提供了一系列朋友ID。
因为我需要每个朋友的特征,我正在做:
foreach($dataarray as $friend) {
$friendurl = "https://graph.facebook.com/".$friend->id."?access_token=".$token."";
$fdata = json_decode(file_get_contents($friendurl));
if($fdata->gender == "male") {
array_push($fulldata, $fdata->name);
}
}
拥有此代码段似乎打破了javascript代码,因为没有运行任何警报说明。
另外,在if之后插入一个break,这样只做一个file_get_contents,似乎可以使代码运行(但我显然需要通过所有的朋友)。
我该如何解决这个问题?
我会使用jQuery或xmlHttpRequest来执行HTTP GET,但不知何故,我似乎总是回到状态代码为0,响应为空。
编辑: 这是JS代码:
<script type="text/javascript">
function initialize() {
alert('Test1');
<?php
$fulldata = array();
$data = $result->data;
foreach($data as $friend) {
$friendurl = "https://graph.facebook.com/".$friend->id."?access_token=".$token."";
//echo("alert(\"".$friendurl."\");");
$fdata = json_decode(file_get_contents($friendurl));
if($fdata->hometown->name) {
array_push($fulldata, $fdata->hometown->name);
}
}
echo ("alert(\"".count($fulldata)."\")");
?>
}
</script>
我还应该补充说,这是在使用画布功能嵌入到facebook中的页面上完成的。
答案 0 :(得分:1)
...试
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
return curl_exec($ch);
curl_close ($ch);
}
foreach($dataarray as $friend){
$friendurl = "https://graph.facebook.com/".$friend->id."?access_token=".$token."";
$fdata = json_decode(curl($friendurl));
if($fdata->gender == "male"){
array_push($fulldata, $fdata->name);
}
}
也许FGC已停用,但您没有收到任何通知/警告。
评论代码:
error_reporting(E_ALL); ini_set("display_errors", 1);
答案 1 :(得分:-1)
请注意,您正在进行跨域AJAX调用,出于安全原因这是禁止的。 您可以在服务器上执行api调用并将数据回显到客户端JS,或者您可以构建一个php代理返回Graph API调用的结果(因为代理服务器位于您自己的服务器上,它们位于同一个域中)。