我有以下代码调用facebook的开放图并返回一个包含share和id的对象。唯一的问题是我正在拨打这个电话30次,加载时间超过9秒。是否有更简单的方法来直接达到目的,只是获得股票,这样加载更快?
//facebook
$fdata = file_get_contents('http://graph.facebook.com/http://theoatmeal.com/comics/127_hours');
$fdata = json_decode($fdata);
if($fdata->shares) {
$share_count['facebook'] = $fdata->shares;
}
答案 0 :(得分:1)
这是我用于graph.facebook.com
的解码 <?php
$info = "http://theoatmeal.com/comics/127_hours";
$url = "http://graph.facebook.com/". $info . "";
$geturl = file_get_contents($url);
$info = json_decode($geturl);
{
$id = $info->id;
$shares = mysql_real_escape_string($info->shares);
?>
<?php echo $id;?><br>
<?php echo $shares;
}
?>
答案 1 :(得分:0)
一个好的简单方法是使用Facebook PHP SDK(see on github)。首先,您必须确保用户已登录:
require "facebook.php";
$facebook = new Facebook(array(
'appId' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET,
));
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
$user = null;
}
}
如果他已登录,您可以进行API调用:
$result = $facebook->api(...);
如果他不是,你必须让他登录:
<?php if ($user): ?>
<a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
<a href="<?php echo $facebook->getLogoutUrl() ?>">Login with Facebook</a>
<?php endif ?>
希望有所帮助!
答案 2 :(得分:0)
我第一次不太清楚你的问题所以我试着再拍一次。
您可以使用FQL进行查询:
$fql = 'SELECT total_count FROM link_stat WHERE url="http://google.com"';
$json = file_get_contents('https://api.facebook.com/method/fql.query?format=json&query=' . urlencode($fql));
$data = json_decode($json);
echo $data[0]->total_count;
此处,total_count
为您提供链接的份额数。
如果您有多个要查询的网址,则可以使用OR
在一个查询中完成所有这些操作:
SELECT url, total_count FROM link_stat WHERE url="..." OR url="..."
以下是一个示例,您希望获得4个网址的份额数:
$urls = array(
"http://google.com",
"http://twitter.com",
"http://stackoverflow.com",
"http://linkedin.com"
);
function wrap($url) {
return 'url="' . $url . '"';
}
$fql = 'SELECT url, total_count FROM link_stat WHERE ';
$fql .= implode(" OR ", array_map("wrap", $urls));
$json = file_get_contents('https://api.facebook.com/method/fql.query?format=json&query=' . urlencode($fql));
$data = json_decode($json);
$data
是一个包含4个对象的数组,每个URL都有一个共享编号:
array(4) {
[0]=> object(stdClass)#2 (2) {
["url"]=> string(17) "http://google.com"
["total_count"]=> int(1318598)
}
[1] => ...
[2] => ...
[3] => ...
}
希望有所帮助!