在 Facebook 上寻找共同的朋友

Finding mutual friends on facebook

我想使用 facebook Graph API v2.2.

找出两个随机用户之间的共同好友

我通读了文档https://developers.facebook.com/docs/graph-api/reference/v2.2/user.context/mutual_friends 它说,"A valid user access token with user_friends permission is required to view the mutual friends of other friends using the app. "

如果 currentUser 和 User2 之间不是朋友,有没有办法找到他们的号码和可能的名字?

我提到了很多其他问题: Facebook Graph API 2.2 mutual friends => 没有答案

How to get Mutual Friends via Facebook's Graph API => 该解决方案只有在两个用户是朋友的情况下才有效,而在我的情况下可能不是这样。

我要自己实现这个。我有一个类似的用例,两个用户可能不是朋友,但我想看看他们中的哪些朋友是共同的。

显然,当两个用户不是共同好友时,您必须在来自服务器的 API 请求中包含一个 'app proof' 参数:

If you want to call this endpoint on behalf two app-users who are not friends, then you must provide the appsecret_proof parameter along with the user access token when making the request. This means you must call this endpoint from your server.

看起来这可能是个好主意。

设法找到解决方案并且它正在运行。如果你和其他人都接到了电话,并且你们都是 Facebook 上的朋友,那么你需要做的就是创建 Appsecret

代表 App secret key found on Facebook Dev under My Apps 和令牌。您通过 运行 创建此密钥: $appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);

然后将令牌和秘密作为参数传递给调用:

Bundle params = new Bundle(); 
params.putString("appsecret_proof", appsecret_proof); 
params.putString("access_token", access_token);

它正在为 2 个不是朋友的用户工作。

这是 facebook 共同好友的工作示例 API:

curl -G -d "access_token=<access_token>" -d "appsecret_proof=<appsecret_proof>" 'https://graph.facebook.com/v2.5/{user-id}?fields=context.fields(mutual_friends)'

App secret证明是以app secret为key的user access token的sha256

请记住,这两个用户都应该使用您的应用程序。 响应将包含也在使用您的应用并获得好友列表权限的用户。

如果您想查找有关共同好友的具体信息,请尝试以下操作:

curl -G -d "access_token=<access_token>" -d "appsecret_proof=<appsecret_proof>" 'https://graph.facebook.com/v2.5/{user-id}?fields=context.fields(mutual_friends.fields(id,name,picture.type(large)))'

这将为所有共同好友return ID、姓名和当前个人资料图片link。您不需要照片许可。

Facebook API 不允许此功能: https://developers.facebook.com/bugs/346462608889036/

这是一个老问题,但现在我已经处理过了,所以我会写...

如果你不是他的朋友,就可以得到所有共同的朋友,只有从 此处提到的服务器(在我的例子中是 Node): https://developers.facebook.com/docs/graph-api/reference/user-context/all_mutual_friends/

获取user-2的token和你的auth-id,同时生成appsecretProof 和您应用的 Facebook 管理面板中的 clientSecret。

https://graph.facebook.com/v2.10/${auth_userId}? 
fields=context.fields%28all_mutual_friends.limit%28100%29%29 
&appsecret_proof=${appsecretProof}&access_token=${accessToken}

记得在用户登录时征得他们的同意,并将应用评论发送到 Facebook 以批准此功能。

使用 'user_friends' 权限,您只能从客户端获得在您的应用中使用的共同好友,而不是所有共同好友。