检测用户是否喜欢Flash中的Facebook页面(粉丝)
问题描述:
有没有办法让iFrame中的Flash Facebook应用程序检测用户是否使用Actionscript 3的Graph API检测页面的粉丝?如果不是,我可以用Javascript实现同样的目标吗?而不要求用户许可(不需要访问令牌)。检测用户是否喜欢Flash中的Facebook页面(粉丝)
答
终于找到了解决办法。在携带的Facebook应用程序的页面,添加:
<?php
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$liked = isset($data["page"]["liked"]) ? $data["page"]["liked"] : '';
?>
$喜欢=如果登录用户喜欢的页面,否则为false真。
答
这可能有点棘手,但前段时间我遇到了一个适用于我的解决方案。您可能想要使用JS调用(您可以在Flash中使用ExternalInterface调用/获取数据)。在您的JS你就会有这样的事情:
//me() gets replaced by the current viewer's uid
var fan_qr = 'SELECT source_id FROM connection WHERE target_id = YOUR_APP_ID AND source_id = me()';
var fan_query = FB.Data.query(fan_qr);
fan_query.wait(function(rows) {
if(rows[0] && rows[0]['source_id'] != "") {
//they're a fan
} else {
//they're not a fan
}
}
我忘了,我发现这个原本,而是道具那家伙的计算出来。
由于您只能获取有关当前用户的数据,因此您不需要访问令牌。我知道,FB刚刚调升对FQL安全要求的,所以如果你最终需要一个访问令牌,你这是怎么得到它:
然后,我见过的人直接将它结束查询是这样的:
var fan_qr = 'SELECT source_id FROM connection WHERE target_id = YOUR_APP_ID AND source_id = me()&access_token=' + window.accessToken;
如果不工作,你可以通过FB.api()执行查询,并简单地传递作为的access_token一个额外的参数。
无论如何,希望这有助于。祝你好运!