Facebook 'Friends.getAppUsers' Graph API kullanarak


87

Uygulamamı Friends.getAppUsersyetkilendiren mevcut kullanıcının arkadaş listesini almak için eski REST API çağrısını kullanan bir uygulamaya sahibim.

Belgeleri okudum, bunu Graph API ile nasıl yapabilirim? Bunun bir örneği ne olabilir?

Yanıtlar:


119

Bir süre etrafı araştırdım ve ben de bunun Graph API kullanarak mümkün olmadığını düşündüm.

Ancak, benzer bir soru yayınladım : Eski GetAppUsers'ın Değiştirilmesi, bir kullanıcının uygulamamı kullanan arkadaşlarını görmek için arar mı? , kullandığım belirli API için harika bir genel yanıt verildi.

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

veya daha genel olarak

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

Bu, uygulamayı kullanan arkadaşlar için "yüklendi = true" ek alanıyla birlikte tüm arkadaşları döndürür.

İşte Graph API Explorer'da çalışıyor :


4
Evet; Sorunuza şu cevapla cevap verdim: facebook.stackoverflow.com/questions/7956639/…
Igy

2
Bu sorgu hangi uygulama için kurulumu kontrol ediyor?
iOS Monster

3
Eksiksiz kullanım için /me/friends?fields=id,name,installed, alan sırasını ve ?fields=tanımlanmadan döndürülen standart bilgileri koruyan başka alanlar (e-posta, doğum günü vb.) Kullanmadığınızı varsayarsak (2012/12/05 tarihinde doğru).
plasmid87

5
Bu yazı yazıldığı sırada, bu sorgu tüm arkadaşları döndürür (bunun installediçin bile doğru değildir) installedAlanın her kullanıcı için var olup olmadığını manuel olarak kontrol etmemiz gerekir .
Pankaj Bhambhani

Evet bu doğru, tüm arkadaşları edindiğinizi ve hangilerinin bayrak yüklü olduğunu kontrol etmeniz gerektiğini netleştirmek için cevabı düzenledim.
Alex

27

Bu, FQL ile yapılabilir.

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

QED!


1
Başlangıçta bu sorguyu kullandım ve gecikme nedeniyle şimdi tüm arkadaşlarım grafik api aracılığıyla ediniyorum ve bunun yerine uygulama tarafımdan filtreliyorum.
Richard

Gecikme hakkında daha fazla ayrıntı verebilir misiniz? Sorgunun yanıt vermesi çok mu uzun sürüyor? Yaklaşık 300'den fazla arkadaşımla bir FB hesabıyla test ediyorum ve yanıt süresi birkaç saniye oldu (2 ila 4), bu çok kötü bir IMO değil.
loungerdork

1
Evet, kabaca gördüğüm bu. Grafik API'si, 400'den fazla arkadaşı döndürmek için 500 ms'lik bir sırayı alıyor, bu yüzden hepsini alıp kendi tarafımda filtrelemeyi tercih ediyorum.
Richard

3
me()yerine de kullanabilirsiniz .
philfreo

8

Evet, Graph API korkunç şekilde belgelenmiştir. Bir "uygulama" türü için herhangi bir belge göremiyorum , ancak belgelerde bir uygulamanın bilgilerine başvuruyorlar:

https://graph.facebook.com/2439131959

Öyleyse, belki de uygulamanın üyelerini Grup sözdizimini kullanarak elde edebilirsiniz?

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

Test etmek için kimliği doğrulanmış bir oturuma ihtiyacınız olacak. Aksi takdirde, Facebook bizi doğrudan sorgu göndermek için FQL kullanmaya zorluyor gibi görünüyor:

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

Sen getirilirken tarafından FQL sorguları çalıştırabilirsiniz https://api.facebook.com/method/fql.query?query=QUERY . Biçim sorgu parametresiyle XML veya JSON olarak bir yanıt biçimi belirtebilirsiniz.

Böylece uygulamanız hakkında bilgi almak için bir FQL sorgusu geçebilirsiniz.


2
Ugh. Görünüşe göre grafik API'sine ışık geçişi, başlangıçta umduğumdan daha çok bir baş ağrısı gibi görünüyor.
Richard

4
FQL kullanarak ihtiyacınız olan her şeyi (yayınlama hariç) yapmak muhtemelen daha kolaydır. Grafik API, en kötü ihtimalle, ihtiyacınız olan her şeyi size vermeyecektir ve en iyi ihtimalle, nasıl yapılacağını bulmanızı rahatsız edici bir şekilde zorlaştıracaktır.
Daniel Schaffer

6

Eski REST API:

$facebook->api_client->friends_getAppUsers();

Yeni Grafik API'si:

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

4
Bu SDK yöntem çağrısı, kapakların altındaki eski dinlenme api'sini kullanır. Grafik api değil :-(
Richard

5

Bu konuda birçok araştırma yaptım. Söyleyebileceğim kadarıyla Friends.getAppUsersGraph API'yi kullanmanın bir yolu yok . Facebook tarafından sağlanan en son SDK'ların tümü, uygulamayı kullanarak arkadaş edinmek için eski REST API'yi kullanır.


6
Bu oldukça eski ve artık doğru cevap değil. Üstte Alex'in cevabını kontrol edin.
Bach

Doğru cevap olmayabilir, ancak bu OP'nin cevabıdır ve doğru cevabı doğru olarak işaretlemektense kendinizi desteklemek daha iyidir çünkü ego.
Ajax

4

RestFB'yi kullanarak aşağıdakileri yaptım (rehberlik için Igy / Alex'e teşekkürler). Facebook'un, kullanıcı kuruluysa ( burada görülebileceği gibi ) "kurulu" = true olan bir dizi arkadaş kimliği döndürdüğünü unutmayın .

Önce bir installedalan ekleyerek Kullanıcı sınıfını genişletin :

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;
    }
}

Ardından, DefaultFacebookClient kullanarak:

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
        }
    }
}

1

Çözüm, filtrelemeyi kendiniz yapmaktır. Muhtemelen, uygulamanıza kaydolan kullanıcıların tüm kullanıcı kimliklerine kendi veritabanınızda oturuyorsunuz. Bu nedenle, önce tüm kullanıcıların arkadaşlarının kimliklerini alın ve veritabanınızdan eşleşen kullanıcı kimliklerine sahip kullanıcıları seçin.

Yeni Facebook Graph API programı çok zayıf bir şekilde yürütüldü ve tam olarak düşünülmemiş görünüyor. Görünüşe göre, Facebook f8'i olgunlaşmadan önce yayınlamak için acele ettiler ve daha önce mevcut olan birçok işlev eksik.


0

Yeni Graph API'de eski REST API'lerini yine de çağırabilirsiniz. Bu kesinlikle geçerlidir.

Alternatif bir yol, uygulama kullanıcısının arkadaşlarını edinmek için FQL kullanmaktır.

Bunu sadece Graph API kullanarak yapmanın bir yolu olup olmadığından emin değilim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.