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
}
}
}
8 回答
我搜索了一会儿,我也认为使用Graph API是不可能的 .
但是,我发布了一个类似的问题Replacement for old GetAppUsers call to see a user's friends who use my application?,用于我正在使用的特定API,并给出了一个很好的一般答案 .
或更一般地说
这将返回所有朋友,并为使用该应用程序的朋友提供附加字段“installed = true” .
这是在Graph API Explorer中工作:
这可以使用FQL完成 .
QED!
是的,Graph API记录非常糟糕 . 我没有看到"application" type的任何文档,但它们确实在文档中引用了应用程序的信息:
https://graph.facebook.com/2439131959
那么,也许您可以使用Group语法获取应用程序的成员?
https://graph.facebook.com/2439131959/members
您需要一个经过身份验证的会话来测试它 . 否则,看起来Facebook正在推动我们使用FQL直接发送查询:
http://developers.facebook.com/docs/reference/fql/application
因此,您可以传递FQL查询以获取有关应用程序的信息 .
旧的REST API:
新图API:
我在这个问题上做了很多调查 . 据我所知,没有办法使用Graph API做
Friends.getAppUsers
. Facebook提供的最新SDK都使用旧的REST API来吸引使用该应用程序的朋友 .使用restFB,我做了以下(感谢Igy / Alex的指导) . 请注意,如果安装了用户,Facebook会返回一个朋友ID数组,其中"installed" = true(如可以看到here) .
首先扩展User类,添加
installed
字段:接下来,使用DefaultFacebookClient:
解决方法是自己进行过滤 . 据推测,您拥有在您自己的数据库中注册应用程序的用户的所有uid . 首先获取所有用户的朋友的uid,然后从数据库中选择具有匹配uid的用户 .
新的Facebook Graph API程序似乎执行得很差,并没有经过深思熟虑 . 看来他们急于在成熟之前将其发布为Facebook f8,之前可用的许多功能都缺失了 .
您仍然可以在新的Graph API中调用旧的REST API . 这是完全有效的 .
另一种方法是使用FQL来获取应用程序用户的朋友 .
我不确定是否有办法只使用Graph API .