87

古い REST API 呼び出しFriends.getAppUsersを使用して、アプリケーションを承認した現在のユーザーのフレンドのリストを取得するアプリケーションがあります。

ドキュメントを読みましたが、Graph API でこれを行うにはどうすればよいですか? これの例は何でしょうか?

4

8 に答える 8

119

しばらく検索しましたが、GraphAPIでは不可能だと思いました。

しかし、私は同様の質問を投稿しました。古いGetAppUsersの代わりに、私のアプリケーションを使用しているユーザーの友達に会うために電話をかけますか?、私が使用していた特定のAPIについては、すばらしい一般的な回答が与えられました。

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

またはより一般的に

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

これにより、すべての友達が返され、アプリケーションを使用する友達には「installed=true」というフィールドが追加されます。

これがGraphAPIExplorerで機能しています。

于 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 クエリを実行でき ます。format クエリ パラメーターを使用して、応答形式を 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 は "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
        }
    }
}
于 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 を引き続き呼び出すことができます。それは完全に有効です。

もう 1 つの方法は、FQL を使用してアプリケーション ユーザーの友達を取得することです。

Graph API だけを使用してこれを行う方法があるかどうかはわかりません。

于 2011-01-11T23:31:48.110 に答える