我有一个android客户端,启动登录到facebook,接收访问令牌和其他详细信息的配置文件。
android客户端将access_token和详细信息传递给服务器(PHP)。
都安装了facebook sdk。
当我从PHP启动FacebookRequest时,例如'/me/'它正在工作。
但是当我从PHP启动一个(安装了应用程序的朋友)facebook请求时/我/朋友。我得到"null"。
当我使用facebook提供的图形浏览器时,结果是:
{
"data": [
]
}
辅助程序的附加信息:
该应用程序目前只包含两个用户,他们是facebook上的好友。
这些用户都是应用程序的管理员。
当前应用程序未发布。
我们没有在统计和评论中"开始提交",
我们请求权限'user_friends'
由于堆栈溢出中的所有内容都需要声誉,权限是这样的:
https://i.stack.imgur.com/kURwB.png 感谢编辑:OK我添加了两个测试用户,让他们成为彼此的朋友,并且/me/friends通过图形资源管理器为他们工作。
但是为什么它对非测试用户不起作用?
显然,Facebook在提供新的访问令牌方面遇到了问题。不知道为什么,但是它为新的登录提供了相同的访问令牌。
现在他们解决了这个问题,这里是我用PHP写的一个Handy函数,它可以让用户解析Facebook的响应,这可能是在手,因为没有解释过文档,谷歌,StackOverFlow。
use Facebook'FacebookSession;
use Facebook'FacebookRequest;
function find_my_facebook_friends($access_token){
require_once 'facebook-php-sdk-v4-4.0-dev/autoload.php';
FacebookSession::setDefaultApplication('app_key','secret_key');
$session = new FacebookSession($access_token);
$request = new FacebookRequest(
$session,
'GET',
'/me/friends'
);
$response = $request->execute();
$graphObject = $response->getGraphObject()->asArray();
return $graphObject;
}
用法:
include_once 'path/to/function.php';
//You wanna use it, just so the PHP file contains your app_key, secret_key Wont be exposed.
$access_token = isset($_POST['access_token']) ? $_POST['access_token'] : NULL;
$facebook_object = find_my_facebook_friends($access_token);
for($i = 0 ; $i < count($facebook_object['data']) ; $i++){
$id = get_object_vars($facebook_object['data'][$i]);
echo $id['id'];
echo $id['name'];
//You don't have to echo, you could handle those fields as you wanted.
}
此函数指移动客户端将其登录用户的访问令牌传递给服务器。
我希望这将节省你很多时间!