我开发了一个 PHP 应用程序,只需要获取用户是否喜欢某个页面。
我这样登录用户:
$this->_facebook = new Facebook(array(
'appId' => "123",
'secret' => "346",
));
$this->_facebookUser = $this->_facebook->getUser();
$this->_facebook->api('/me');
and then
$checkIfUserLikePage = $this->_facebook->api(array(
"method" => "fql.query",
"query" => "select uid from page_fan where uid=me() and page_id=" . $pageid,
));
这在大多数情况下有效,但对于某些用户则无效,它返回一个空数组。我在线检查过,我的应用程序可能缺少 *user_likes* 权限。事实上我没有这个权限。所以我再次发现我应该添加权限,卸载应用程序并重试。
So I:
- 登录developer.facebook.com > 应用程序 >myapp> 应用详细信息 > 配置应用中心权限
- 将“user_likes”添加到用户和好友权限文本区
- saved
- 要求测试用户删除myapp
- 要求测试用户访问该应用程序
结果我仍然为用户得到一个空数组。
还有什么问题吗?谢谢
不要将应用程序中心中的权限与传递给范围的权限混淆。当提示用户权限时,您是否已将“user_likes”添加到范围中?
使用 JS-SDK,您可以这样做:
FB.login(function(response) {
// Do some fancy stuff
}, {scope: 'user_likes'});
另请确保您拥有有效的用户访问令牌。您的 PHP-SDK 提供了一个名为“getAccessToken()”的方法,该方法返回当前的访问令牌。
您也可以简单地尝试打印 getUser() 的结果,它返回当前用户的 userID。如果得到 0,则可以非常确定用户未与您的 Facebook 应用程序连接,因此您将无法在 FQL 查询中使用 me()。
还可以使用以下命令查询图形 API/{user-id}/permissions
。您将得到一个返回的 json 对象,其中包含用户授予的所有权限。当然,您需要一个与您的应用程序有效连接的用户才能做到这一点。
我希望能给你一些有用的建议。如果没有任何帮助,请尝试发布更多代码。
快乐编码!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)