我开发了一个 PHP 应用程序,如果用户喜欢某个页面,它只需要获取。
我以这种方式登录用户:
$this->_facebook = new Facebook(array(
'appId' => "123",
'secret' => "346",
));
$this->_facebookUser = $this->_facebook->getUser();
$this->_facebook->api('/me');
然后
$checkIfUserLikePage = $this->_facebook->api(array(
"method" => "fql.query",
"query" => "select uid from page_fan where uid=me() and page_id=" . $pageid,
));
这主要有效,但对于某些用户无效,它返回一个空数组。我在网上查过,我的应用程序可能缺少 *user_likes* 权限。事实上我没有这个许可。所以我再次发现我应该添加权限,卸载应用程序并重试。
所以我:
- 登录到 developer.facebook.com > apps > myapp> App details > 配置 App Center 权限
- 将“user_likes”添加到用户和好友权限文本区域
- 已保存
- 要求测试用户删除 myapp
- 要求测试用户访问该应用
结果我仍然为用户得到一个空数组。 还有什么问题?谢谢
最佳答案
不要将应用中心中的权限与您传递给范围的权限混淆。提示用户权限时,是否在范围内添加了“user_likes”?
例如,使用 JS-SDK,您可以这样做:
FB.login(function(response) {
// Do some fancy stuff
}, {scope: 'user_likes'});
同时确保您拥有有效的用户访问 token 。您的 PHP-SDK 提供了一个名为“getAccessToken()”的方法,它返回当前的访问 token 。
您也可以简单地尝试打印返回当前用户的用户 ID 的 getUser() 的结果。如果得到 0,则可以确定用户未连接到您的 Facebook 应用程序,因此您将无法在 FQL 查询中使用 me()。
还可以使用 /{user-id}/permissions
查询图形 API。您将得到一个返回的 json 对象,其中包含用户授予的所有权限。当然,您需要一个有效的连接用户才能执行此操作。
我希望我能给你一些有用的建议。如果没有任何帮助,请尝试发布更多代码。
编码愉快!
关于php - 无法像某些用户那样获取页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541335/