【发布时间】:2014-11-29 15:59:13
【问题描述】:
我正在使用 facebook javascript sdk,我想显示这些用户之间的所有共同朋友,而不仅仅是那些拥有该应用程序的人。
使用api文档here,只能看到拥有该应用的共同facebook好友列表。
如何获取共同好友的完整列表?
【问题讨论】:
标签: facebook facebook-graph-api facebook-javascript-sdk
我正在使用 facebook javascript sdk,我想显示这些用户之间的所有共同朋友,而不仅仅是那些拥有该应用程序的人。
使用api文档here,只能看到拥有该应用的共同facebook好友列表。
如何获取共同好友的完整列表?
【问题讨论】:
标签: facebook facebook-graph-api facebook-javascript-sdk
该页面上的附加说明很好地解释了为什么您无法获得所有内容。
也就是说,获得共同朋友的完整列表的唯一方法是,如果您的所有朋友都注册了您的应用并授予 user_friends 权限
【讨论】:
不管怎样,有一个端点可以获取所有共同的朋友:
https://developers.facebook.com/docs/graph-api/reference/v2.5/user-context/all_mutual_friends
返回会话用户和请求用户共有的所有 Facebook 好友的列表。这包括使用该应用的朋友以及不使用该应用的共同朋友。
它还说您必须从您的服务器而不是应用客户端请求此端点。
【讨论】:
function aa_mutl_frnd(x, row)
{
FB.init({
appId : '<?php echo get_option('_fb_apps_id');?>', //Facebook apps id using theme option
cookie : true, // enable cookies to allow the server to access
// the session
xfbml : true, // parse social plugins on this page
version : 'v2.5' // use graph api version 2.5
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var accessToken = response.authResponse.accessToken;
console.log(':acc_tk:'+accessToken);
//////////////////////////////////////////////////////////
var data={
'action': 'wq_accss_tkn_gnrt',
'ddt' : accessToken
}
$.post('<?php echo admin_url('admin-ajax.php'); ?>', data, function (response) {
console.log(':acc_tk2:'+response);
FB.api(
"/"+x+"",
{
"fields": "context.fields(all_mutual_friends)",
//"access_token": '',
"appsecret_proof": response,
},
function (response) {
console.log(response);
}
);
});
////////////////////////////////////
}
});
}
/// ajax part /////
add_action('wp_ajax_wq_accss_tkn_gnrt', 'wq_accss_tkn_gnrt');
add_action('wp_ajax_nopriv_wq_accss_tkn_gnrt', 'wq_accss_tkn_gnrt');
function wq_accss_tkn_gnrt() {
echo hash_hmac('sha256',$_POST['ddt'],'app_secret');;
die();
}
【讨论】:
get facebook friends
$access_token = "facebook token";
$app_secret = "facebook secret";
$appsecret_proof = hash_hmac('sha256', $access_token,
$app_secret);
$graph_url = "https://graph.facebook.com/me?fields=context.fields(/me?fields=id,name,friends.limit(99)" . "&access_token=" . $access_token . "&appsecret_proof=" . $appsecret_proof;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $graph_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
return $response_mutual = json_decode($output, true);
curl_close($ch);
【讨论】: