有没有办法让iFrame中的Flash Facebook应用使用Graph API for Actionscript 3来检测用户是否是该页面的粉丝?如果没有,我可以使用Javascript实现相同的目标吗?没有要求用户许可(不需要访问令牌)。
答案 0 :(得分:0)
这可能有点棘手,但我刚才遇到了一个适用于我的解决方案。您可能希望使用JS调用(可以在闪存中使用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调用的安全性,所以如果你最终需要一个访问令牌,这就是你得到它的方式:
FB.getLoginStatus(function(response) {
if(response.session) {
//hang on to this for later use
window.accessToken = response.session.access_token;
}
});
然后我看到人们将它直接添加到查询的末尾,如下所示:
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作为附加参数传递。
无论如何,希望这会有所帮助。祝你好运!
答案 1 :(得分:0)
终于找到了解决方案。在带有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"] : '';
?>
$ likes = true如果登录用户喜欢该页面,否则为false。