Есть ли способ API facebook ios для получения списка друзей, у которых установлено ваше приложение? В основном я требую нечто похожее на "Слова с друзьями", где они могут определить, кто из ваших друзей FB играет в игру. У меня есть одно решение, которое требует некоторого дополнительного использования базы данных, но надеялось, что у FB api есть что-то встроенное для такого рода запросов.
IOS facebook проверяет, установлено ли у друзей приложение
Ответ 1
Создайте класс делегата FBFriendPickerDelegate
и переопределите эту функцию:
-(BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker shouldIncludeUser:(id<FBGraphUser>)user{
BOOL installed = [user objectForKey:@"installed"] != nil;
return installed;
}
Для пользователей, у которых нет установленного приложения, поле installed
будет nil
, но вы должны запросить его при загрузке данных:
self.friendsController = [[FBFriendPickerViewController alloc] initWithNibName:nil bundle:nil];
//...
NSSet *fields = [NSSet setWithObjects:@"installed", nil];
self.friendPickerController.fieldsForRequest = fields;
//...
[self.friendsController loadData];
Ответ 2
Я думаю, что fql немного сложна для меня, поэтому я использую эту функцию в FBRequest для вызова Graph API для решения этой проблемы в Facebook SDK 3.5
+ (FBRequest *)requestWithGraphPath:(NSString*)graphPath parameters:(NSDictionary*)parameters HTTPMethod:(NSString*)HTTPMethod;
И код:
FBRequest *request = [FBRequest requestWithGraphPath:@"me/friends"
parameters:@{@"fields":@"name,installed,first_name"}
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBRequestConnection *connection,
id result,
NSError *error){
}];
Вы можете поместить все ваши интересные поля в словарь параметров. И согласно SDK Reference, объект, содержащий тип (это всегда "пользователь" ), id (идентификатор пользователя) и необязательное установленное поле (всегда true, если возвращено); Установленное поле возвращается только в том случае, если пользователь установил приложение, иначе он не будет частью возвращаемого объекта
Ответ 3
Я использовал этот код в прошлом, чтобы получить приложение, используя друзей от пользователя.
facebook
- это класс facebook
, который поставляется с FB Connect.
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];
Ответ 4
Самое простое решение - использовать
- (BOOL)friendPickerViewController: shouldIncludeUser:
реализованный протоколом FBFriendPickerDelegate, в последнем 3.5.1 Facebook SDK (июнь 2013 г.), в котором задал вопрос о том, следует ли включать друга в список на основании "установленного" поля при выборе меня/друзей.
Установленное поле присутствует (true), если друг также является пользователем вызывающего приложения.
Вы можете использовать следующее:
- (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker
shouldIncludeUser:(id <FBGraphUser>)user {
return [[user objectForKey:@"installed"] boolValue];
}
ВАЖНО! Вы должны включить следующее, чтобы включить поле в запрос, и сообщить другуPicker о его делетете:
self.fieldsForRequest = [NSSet setWithObject:@"installed"];
self.delegate = self;
Вы можете проверить с помощью Graph Api Explorer, что только друзья с установленными приложениями отображаются с помощью API-интерфейса Graph API и ввода запроса
я/друзья? = Поля установлены
и вы можете вернуть список своих друзей, как это, где один из пользователей установил ваше приложение (true):
...
{
"id": "100002656xxxxxx"
},
{
"installed": true,
"id": "100004366xxxxxx"
},
...