87

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

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

4

8 回答 8

119

我搜索了一段时间,我也认为使用 Graph API 是不可能的。

但是,我发布了一个类似的问题,替换旧的 GetAppUsers 调用以查看使用我的应用程序的用户朋友?,对于我正在使用的特定 API,并得到了一个很好的通用答案。

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

或更一般地说

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

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

这是它在Graph API Explorer中的工作:

于 2011-10-31T22:00:38.817 回答
27

这可以通过 FQL 完成。

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

QED!

于 2010-10-27T09:27:50.163 回答
8

是的,Graph API 的文档非常糟糕。我没有看到任何有关“应用程序”类型的文档,但它们确实在文档中引用了应用程序的信息:

https://graph.facebook.com/2439131959

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

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

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

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

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

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

于 2010-05-18T16:45:33.237 回答
6

旧的 REST API:

$facebook->api_client->friends_getAppUsers();

新图形 API:

$facebook->api(array('method' => 'friends.getAppUsers'));
于 2010-10-28T00:08:42.283 回答
5

我对这个问题做了很多调查。据我所知,没有办法Friends.getAppUsers使用 Graph API。Facebook 提供的最新 SDK 都使用旧的 REST API 来获取使用该应用程序的朋友。

于 2010-06-17T22:20:07.167 回答
4

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

首先扩展 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
        }
    }
}
于 2011-12-21T21:27:06.677 回答
1

解决方法是自己进行过滤。大概,您拥有所有已注册您的应用程序的用户的 uid,它们都位于您自己的数据库中。所以首先获取所有用户的朋友的uid,然后从你的数据库中选择具有匹配uid的用户。

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

于 2010-08-12T04:40:21.807 回答
0

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

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

我不确定是否有办法只使用 Graph API 来做到这一点。

于 2011-01-11T23:31:48.110 回答