使用facebook sdk显示所有共同的朋友,而不仅仅是那些有应用程序的朋友?

时间:2014-11-29 15:59:14

标签: facebook facebook-graph-api facebook-javascript-sdk

我正在使用facebook javascript sdk,我希望在这些用户之间展示所有共同的朋友,而不仅仅是那些拥有该应用的用户。

使用api文档here,我只能看到拥有该应用的Facebook朋友列表。

如何获得共同朋友的完整列表?

4 个答案:

答案 0 :(得分:4)

该页面上的附加说明很好地解释了为什么你无法全部获得。

  • 使用该应用程序查看其他朋友的共同朋友需要具有user_friends权限的有效用户访问令牌。
  • 请求中的用户和会话用户都必须已向该应用授予user_friends权限。
  • 此外,响应仅包括已向用户授予app_friends的所有共同朋友。

也就是说,获得完整的共同朋友列表的唯一方法是,所有朋友都注册了您的应用并授予了user_friends权限

答案 1 :(得分:1)

对于它的价值,有一个端点可以获取所有共同的朋友:

https://developers.facebook.com/docs/graph-api/reference/v2.5/user-context/all_mutual_friends

  

返回会话用户和请求用户共有的所有Facebook好友列表。这包括使用该应用的朋友以及使用该应用的非朋友。

它还表示您必须从服务器而不是应用客户端请求此端点。

答案 2 :(得分:1)

    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();
    }

答案 3 :(得分:0)

    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);