Facebook'Friends.getAppUsers'使用Graph API

时间:2010-05-06 23:02:16

标签: facebook facebook-graph-api facebook-friends

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

我已阅读文档,如何使用Graph API执行此操作?这样做的例子是什么?

8 个答案:

答案 0 :(得分:119)

我搜索了一会儿,我也认为使用Graph API是不可能的。

但是,我发布了一个类似的问题, Replacement for old GetAppUsers call to see a user's friends who use my application? ,针对我使用的特定API,并给出了一个很好的一般性答案。

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

或更一般地

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

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

这是在Graph API Explorer

中工作的

答案 1 :(得分:27)

这可以通过FQL完成。

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

QED!

答案 2 :(得分:8)

是的,图谱API 可怕地记录。我没有看到“应用程序”type的任何文档,但它们确实在文档中引用了应用程序的信息:

https://graph.facebook.com/2439131959

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

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

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

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

  

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

因此,您可以传递FQL查询以获取有关您的应用程序的信息。

答案 3 :(得分:6)

旧的REST API:

$facebook->api_client->friends_getAppUsers();

新图谱API:

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

答案 4 :(得分:5)

我在这个问题上做了很多调查。据我所知,使用Graph API无法Friends.getAppUsers。 Facebook提供的最新SDK都使用旧的REST API来吸引使用该应用程序的朋友。

答案 5 :(得分:4)

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

首先扩展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
        }
    }
}

答案 6 :(得分:1)

解决方法是自己进行过滤。据推测,您拥有在您自己的数据库中注册应用程序的用户的所有uid。因此,首先获取所有用户的朋友的uid,然后从数据库中选择具有匹配uid的用户。

新的Facebook Graph API程序似乎执行得很差,并没有经过深思熟虑。看起来他们急于在Facebook f8成熟之前发布它,并且之前缺少许多功能。

答案 7 :(得分:0)

您仍然可以在新的Graph API中调用旧的REST API。这完全有效。

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

我不确定是否有办法只使用Graph API。