我使用Facebook sdk 4在Facebook上创建了一个标签应用程序。我可以获得会话信息,如下所示。
Facebook\FacebookSession Object
(
[token:Facebook\FacebookSession:private] => xxxxxxxxxxxxx
[signedRequestData:Facebook\FacebookSession:private] => Array
(
[algorithm] => HMAC-SHA256
[expires] => 1401951600
[issued_at] => 1401947659
[oauth_token] => xxxxxxxxxxx
[page] => Array
(
[id] => 1503486xxxxxxxx
[liked] =>
[admin] => 1
)
[user] => Array
(
[country] => lk
[locale] => en_GB
[age] => Array
(
[min] => 21
)
)
[user_id] => 85219xxxxxxxxxxxx
)
)
我想检查用户是否已经喜欢该页面。我试过这种方式。
if($session['page']['liked'] == 1){
echo "user liked the page";
}else{
echo "not liked";
}
但没有用。
答案 0 :(得分:3)
这不再适用,因为Facebook正在劝阻“喜欢门控”的内容。
见
https://developers.facebook.com/docs/apps/changelog#v2_1_90_day_deprecations 今天之后创建的Page Tab应用的'signed_request'对象将不再返回'likes'属性。从2014年11月5日起,“喜欢”属性将始终返回“true”,无论此人是否喜欢该页面。
https://developers.facebook.com/docs/facebook-login/permissions/v2.1#reference-user_likes 由于您需要user_likes权限来确定用户是否喜欢该页面,从而需要进行应用审核,因此您很可能无法获得批准的权限:
不允许:根据某人是否喜欢某个网页,对您的应用或应用内的某些内容进行访问。
答案 1 :(得分:2)
试试这个:
$pageInfo = $session->getSignedRequestProperty('page');
if ($pageInfo['liked'] == 1) {
这是在周五实施的:https://github.com/facebook/facebook-php-sdk-v4/pull/97
应该是4.0.7版本。
$helper = new FacebookPageTabHelper();
$user_liked = $helper->isLiked();
答案 2 :(得分:1)
不再支持此功能: Graph API v2.1 and updated iOS and Android SDKs
在signed_request对象的page属性中不再返回 like 字段。所以我想不再强迫用户喜欢页面来获取标签内容......