我有一个Android客户端,可以启动登录到Facebook,接收访问令牌以及有关该配置文件的其他详细信息。
android客户端将access_token和详细信息传递给服务器(PHP)。
两者都安装了facebook sdk。
当我从PHP发起FacebookRequest时,例如'/ me /'它正在运行。
但当我从PHP发起一个(安装了APP的朋友)FacebookRequest时 “/我的/朋友的。我得到“null”。
当我使用facebook提供的图形浏览器时,结果为:
{
"data": [
]
}
帮助者的其他信息:
该应用目前只包含两位用户,这是facebook上的朋友。
这些用户都是该应用的管理员。
目前该应用尚未发布。
我们没有在某处建议的统计和评论中“开始提交”。
我们要求获得'user_friends'的许可。
由于堆栈溢出中的所有内容都需要声誉, 这是权限的样子:
http://i.stack.imgur.com/kURwB.png
由于
编辑:
好的,我添加了两个测试用户,让他们成为彼此的朋友,而/我/朋友通过图形资源管理器正在为他们工作。
但为什么它对非测试用户不起作用?
答案 0 :(得分:0)
好, 显然Facebook在提供新的访问令牌时遇到了问题。 不知道为什么,但它为新的Log-Ins提供了相同的访问令牌。
现在他们已经修复了这里我用PHP写的一个Handy函数,它将允许用户使用 解析Facebook的回复,这可能会出现,因为没有通过Docs,Google,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.
}
此功能是指移动客户端将其登录用户的访问令牌传递给服务器。
我希望这会为你节省很多时间!