Facebook的Friends.getAppUsers使用Graph API

我有一个应用程序使用旧的REST API调用Friends.getAppUsers来获取已经授权我的应用程序的当前用户的朋友列表。

我已阅读文档,如何使用Graph API做到这一点? 这是一个什么样的例子?

我search了一段时间,我也认为这是不可能使用graphicsAPI。

但是,我发布了一个类似的问题, replace旧的GetAppUsers调用来查看使用我的应用程序的用户的朋友? ,针对我使用的特定API,给出了一个很好的一般答案。

 https://graph.facebook.com/me/friends?fields=installed 

或更一般地说

 https://graph.facebook.com/{user id}/friends?fields=installed 

这将返回所有的朋友,为使用该应用程序的朋友提供附加字段“installed = true”。

这是它在graphicsAPI资源pipe理器中工作 :

这可以通过FQL来完成。

 SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?) AND is_app_user = 1 

QED!

是的,graphicsAPI是可怕的文件。 我没有看到“应用程序” types的任何文档,但他们确实在文档中引用了应用程序的信息:

https://graph.facebook.com/2439131959

那么,也许你可以使用Group语法来获取应用程序的成员?

https://graph.facebook.com/2439131959/members

您需要经过validation的会话才能对其进行testing。 否则,看起来Facebook正在推动我们直接使用FQL发送查询:

http://developers.facebook.com/docs/reference/fql/application

您可以通过获取https://api.facebook.com/method/fql.query?query=QUERY来执行FQL查询。; 您可以使用格式查询参数将响应格式指定为XML或JSON。

所以你可以通过一个FQL查询来获取关于你的应用程序的信息。

旧的REST API:

 $facebook->api_client->friends_getAppUsers(); 

新graphicsAPI:

 $facebook->api(array('method' => 'friends.getAppUsers')); 

我在这个问题上做了很多调查。 从我可以告诉的是,没有办法使用Graph API来做Friends.getAppUsers 。 Facebook提供的最新的SDK都使用旧的REST API来获取使用该应用程序的朋友。

使用restFB ,我做了以下(感谢Igy / Alex的指导)。 请注意,如果安装了用户,Facebook会返回“installed”= true的朋友ID数组(如此处所示)。

首先扩展User类,添加一个installed字段:

 import com.restfb.Facebook; import com.restfb.types.User; public class InstalledUser extends User { @Facebook private boolean installed; public InstalledUser() { } public boolean getInsatlled() { return installed; } } 

接下来,使用DefaultFacebookClient:

 FacebookClient facebook = new DefaultFacebookClient(pFacebookAccessToken); Connection<InstalledUser> installedFacebookUsers = facebook.fetchConnection("/" + pFacebookId + "/friends", InstalledUser.class, Parameter.with("fields", "installed")); for (List<InstalledUser> friends : installedFacebookUsers) { for (InstalledUser friend : friends) { if (friend.getInsatlled()) { // Add friend.getId() to a list of ID, or whatever } } } 

解决方法是自己做过滤。 据推测,您已经注册了您的应用程序的用户的所有用户都坐在自己的数据库中。 因此,首先获取所有用户的朋友的用户名,并从您的数据库中select具有匹配的用户名的用户。

新的FacebookgraphicsAPI程序似乎执行不力,并没有完全想到。 看起来他们赶在Facebook成功发布之前已经发布了Facebook f8 ,而且之前还有很多function缺失。

您仍然可以在新的Graph API中调用旧的REST API。 这是完全正确的。

另一种方法是使用FQL来获取应用程序用户的朋友。

我不确定是否有一种方法可以使用Graph API来实现。