Uygulamamı Friends.getAppUsers
yetkilendiren 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:
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.
/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).
installed
için bile doğru değildir) installed
Alanın her kullanıcı için var olup olmadığını manuel olarak kontrol etmemiz gerekir .
Bu, FQL ile yapılabilir.
SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?)
AND is_app_user = 1
QED!
me()
yerine de kullanabilirsiniz .
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.
Bu konuda birçok araştırma yaptım. Söyleyebileceğim kadarıyla Friends.getAppUsers
Graph 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.
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 installed
alan 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
}
}
}
Çö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.