古い REST API 呼び出しFriends.getAppUsers
を使用して、アプリケーションを承認した現在のユーザーのフレンドのリストを取得するアプリケーションがあります。
ドキュメントを読みましたが、Graph API でこれを行うにはどうすればよいですか? これの例は何でしょうか?
古い REST API 呼び出しFriends.getAppUsers
を使用して、アプリケーションを承認した現在のユーザーのフレンドのリストを取得するアプリケーションがあります。
ドキュメントを読みましたが、Graph API でこれを行うにはどうすればよいですか? これの例は何でしょうか?
しばらく検索しましたが、GraphAPIでは不可能だと思いました。
しかし、私は同様の質問を投稿しました。古いGetAppUsersの代わりに、私のアプリケーションを使用しているユーザーの友達に会うために電話をかけますか?、私が使用していた特定のAPIについては、すばらしい一般的な回答が与えられました。
https://graph.facebook.com/me/friends?fields=installed
またはより一般的に
https://graph.facebook.com/{user id}/friends?fields=installed
これにより、すべての友達が返され、アプリケーションを使用する友達には「installed=true」というフィールドが追加されます。
これがGraphAPIExplorerで機能しています。
これは FQL で実行できます。
SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?)
AND is_app_user = 1
QED!
はい、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 クエリを渡して、アプリケーションに関する情報を取得できます。
古い REST API:
$facebook->api_client->friends_getAppUsers();
新しいグラフ API:
$facebook->api(array('method' => 'friends.getAppUsers'));
私はこの問題について多くの調査を行ってきました。私が知る限りFriends.getAppUsers
、Graph API を使用する方法はありません。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
}
}
}
回避策は、フィルタリングを自分で行うことです。おそらく、アプリケーションにサインアップしたユーザーのすべての uid が独自のデータベースにあるとします。したがって、最初にすべてのユーザーの友人の uid を取得し、一致する uid を持つユーザーをデータベースから選択します。
新しい Facebook Graph API プログラムは、実行が非常に不十分で、十分に検討されていないようです。成熟する前にFacebook f8用に急いで公開したようで、以前は利用できた多くの機能が失われています。
新しい Graph API で古い REST API を引き続き呼び出すことができます。それは完全に有効です。
もう 1 つの方法は、FQL を使用してアプリケーション ユーザーの友達を取得することです。
Graph API だけを使用してこれを行う方法があるかどうかはわかりません。