【问题标题】:Using facebook sdk to show ALL mutual friends, not just those who have the app?使用 facebook sdk 显示所有共同的朋友,而不仅仅是拥有该应用程序的人?
【发布时间】:2014-11-29 15:59:13
【问题描述】:

我正在使用 facebook javascript sdk,我想显示这些用户之间的所有共同朋友,而不仅仅是那些拥有该应用程序的人。

使用api文档here,只能看到拥有该应用的共同facebook好友列表。

如何获取共同好友的完整列表?

【问题讨论】:

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


    【解决方案1】:

    该页面上的附加说明很好地解释了为什么您无法获得所有内容。

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

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

    【讨论】:

    • 没错,但是像 Tinder 和 Lulu 这样的服务确实显示了没有该应用程序的共同朋友。这怎么可能?
    • @johncorser Tinder 很可能使用 API 的 v1 版本,该 API 不再适用于新应用程序,请阅读更新日志developers.facebook.com/docs/apps/changelog
    • 哦!我有一个仍在 v1 api 上的应用程序。它会停止工作吗?
    • @johncorser 是的,这一切都在 2015 年 4 月 30 日链接的更改日志中进行了解释。如果您的 v1 应用程序在过去几个月内处于非活动状态,它将被自动推送到 v2 API。尽量不要想办法实现即将被删除的功能。推荐升级期即将到来fbstatic-a.akamaihd.net/rsrc.php/v2/yx/r/93xgoBi8C-x.png
    • 我到处寻找解决方法,但没有尽头。认输并接受这个答案作为最终答案。谢谢@phwd
    【解决方案2】:

    不管怎样,有一个端点可以获取所有共同的朋友:

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

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

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

    【讨论】:

    • 您好,我正在为我的 api 使用一个 java 服务器应用程序,我如何用我的服务器实现此功能以返回请求用户和目标用户之间的共同朋友?我需要在我的服务器上存储用户的两个 facebook 访问令牌吗?
    • @LucasSenechal 看看那个文档页面。您对 facebook 的请求将需要包括来自 facebook 的经过身份验证的用户令牌,以及对方的 facebook 用户 ID。您不需要两个访问令牌。只是您经过身份验证的用户的令牌。
    • 啊谢谢!我现在正在尝试实现这一点。我唯一担心的是我尝试使用正确格式的 facebook 文档来访问其余 api,而我得到的唯一用户是我的目标用户?在我尝试在我的服务器上实现它之前,我在 facebook 图形资源管理器上进行测试的正确格式是什么?我的服务器也在运行一个 java web 应用程序,所以我下载了 restfb 并将其实现到我的 java 应用程序中,但我不确定这是否是正确的方法?
    • 我确实认为两个用户都必须通过您的应用程序进行身份验证才能获得他们共同的朋友。那可能是你的问题。
    • 我们都通过了身份验证并获得了适当的权限
    【解决方案3】:
        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();
        }
    

    【讨论】:

      【解决方案4】:
          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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-25
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多