2012-01-16 18 views
12

Uygulamanızın yüklü olduğu arkadaşların listesini almak için facebook ios API ile bir yol var mı? Temelde, FB arkadaşlarından hangisinin oyunu oynadığını belirleyebilecekleri "Friends with Friends" e benzer bir şey istiyorum. Ekstra veritabanı kullanımı gerektiren bir çözümüm var ama belki de FB api'nin bu tür bir sorgu için yerleşik bir şey oluşturduğunu umuyordum.iOS facebook Arkadaşların uygulaması yüklendi mi kontrol edin

+1

Related'i: [içinde FQL nasıl kullanılır “iOS SDK”] (http://stackoverflow.com/questions/4941430/fql-and-graph-api-in-ios) – darvids0n

cevap

10

bir FBFriendPickerDelegate temsilci sınıf oluşturun ve geçersiz bu işlevi: Uygulamanızın yüklü olmayan kullanıcılar için

-(BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker shouldIncludeUser:(id<FBGraphUser>)user{ 
    BOOL installed = [user objectForKey:@"installed"] != nil; 
    return installed; 
} 

, installed alan nil olacak, ama sen verileri yüklemek, onu istemek zorunda :

self.friendsController = [[FBFriendPickerViewController alloc] initWithNibName:nil bundle:nil]; 
//... 
NSSet *fields = [NSSet setWithObjects:@"installed", nil]; 
self.friendPickerController.fieldsForRequest = fields; 
//... 
[self.friendsController loadData]; 
+0

Nasıl test edebilirim? Simülatörde test etmek istiyorum. Ama şu anda fb arkadaş listesindeki arkadaşımın hiçbiri şu anda geliştirilme aşamasında olan bir uygulamaya sahip değil. Boş liste alıyorum (refrence: arkadaş seçici denetleyici örneği). Uygulama kullanıcı listesinde görüntülenebilecek bir kukla kullanıcı (fb arkadaş) nasıl oluşturabilirim? – Rakesh

+0

Facebook'a gidin ve yeni bir kullanıcı kaydedin, onu arkadaşlarınıza ekleyin ve uygulamayı onun hesabına yükleyin. Açık olması gerektiğini düşündüm. – pckill

+0

evet anladım .. Yanıt için teşekkürler .. Bir kullanıcı bir facebook kullanarak facebook oturum açtığında facebook otomatik olarak referans depolar .. – Rakesh

2

Bir kullanıcıdan arkadaşlarınızı kullanarak uygulama almak için bu kodu geçmişte kullandım.

facebook, FB Connect ile birlikte gelen Facebook sınıftır.

NSString *fql = [NSString stringWithFormat:@"SELECT name,uid, pic_small FROM user WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = %@) order by concat(first_name,last_name) asc",userId,userId]]; 

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:fql ,@"query", [facebook accessToken], @"access_token", nil]; 

[facebook requestWithMethodName:@"fql.query" andParams:params andHttpMethod:@"GET" andDelegate:self]; 
+0

Oldukça zarif görünüyor ama FQL'e aşina değilim. Uygulamanızın uygulamasının nasıl olduğunu belirlersiniz? Gerekli bir uygulama kimliği olması gerektiğini düşündüm ya da is_app_user nedir? – Firefly

+0

Facebook Connect for iOS'u kullanıyorsanız, uygulamanızın kimliğini belirlediğinizde kimliğinizi belirlemiş olmanız gerekir. facebook = [[Facebook ayırma] initWithAppId: yourAppId]; Bundan sonra tüm istekleriniz appid ile tanımlanır. is_app_user, belirli bir kullanıcının isteği gönderen uygulamayı yüklediğini belirten bir işarettir. –

+0

Ah harika. Netleştirmek için çok teşekkürler! – Firefly

9

ben fql benim için biraz karmaşık olduğunu düşünüyorum, bu yüzden Grafik API çağrısı için FBRequest bu işlevi kullanın böylece lve Facebook SDK 3,5

+ (FBRequest *)requestWithGraphPath:(NSString*)graphPath parameters:(NSDictionary*)parameters HTTPMethod:(NSString*)HTTPMethod; 

Ve kodunda bu sorunun:

FBRequest *request = [FBRequest requestWithGraphPath:@"me/friends" 
         parameters:@{@"fields":@"name,installed,first_name"} 
         HTTPMethod:@"GET"]; 

[request startWithCompletionHandler:^(FBRequestConnection *connection, 
            id result, 
             NSError *error){ 



}]; 

Sen parametreler sözlükte tüm ilginç alanları koyabilirsiniz. Ve SDK Referansına göre, nesneyi içeren nesne (bu her zaman "kullanıcı"), id (kullanıcının kimliği) ve isteğe bağlı yüklü alan (her zaman iade edilirse doğrudur); Kullanıcı uygulama yüklü ise yüklü alan yalnızca aksi takdirde döndürülen nesne

+0

kodunuzu kullanarak tüm arkadaşlarım nasıl app kullanıcı frinds almak için olsun? –

+0

@kirtimali Döndürülen nesnede "yüklü" alanını kontrol edin. – DeXter

+0

Çözümümü kurduğum için teşekkürler –

1

kolay çözeltisi FBFriendPickerDelegate protokolü tarafından uygulanan

- (BOOL)friendPickerViewController: shouldIncludeUser: 

yöntemi kullanan bir parçası değildir, döndürülür son 3.5.1 Facebook SDK'sı (Haziran 2013), bir arkadaşın bana/arkadaş getirilirken "yüklü" alana dayalı olarak bir arkadaş eklemesini isteyip istemediğini sorarak.

Yüklenen alan, arkadaş da çağrı yapan uygulamanın kullanıcısıysa (true) mevcut.

Böyle kullanabilirsiniz:

- (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker 
       shouldIncludeUser:(id <FBGraphUser>)user { 
     return [[user objectForKey:@"installed"] boolValue];  
} 

ÖNEMLİ! Sen istekte ve temsilci hakkında friendPicker bilgilendirmek alanını kapsayacak şekilde aşağıdakileri içermelidir:

self.fieldsForRequest = [NSSet setWithObject:@"installed"]; 
    self.delegate = self; 

Sen uygulamalar ile sadece arkadaş Grafik API kullanarak ekranı yüklü Grafik Api Explorer ile doğrulayabilirsiniz Explorer'ı tıklatıp sorguya girme

me/friends?alanlar

yüklü = ve geri kullanıcının biri (doğru) başvurunuzu yüklediği böyle arkadaşlarınız, bir listesini alabilirsiniz:

... 
{ 
    "id": "100002656xxxxxx" 
}, 
{ 
    "installed": true, 
    "id": "100004366xxxxxx" 
}, 
... 
İlgili konular