Я действительно потратил часы, чтобы попытаться решить этот вопрос безуспешно! Я просто хочу иметь возможность читать временную шкалу любого пользователя (публичные сообщения) из facebook... Технически (для простоты) я бы предпочел использовать только фреймворки из iOS sdk (т. е. без использования facebook). Поэтому в настоящее время я использую только Social.framework и Accounts.framework.
Что мне удалось сделать до сих пор, так это прочитать временную шкалу Facebook текущего пользователя, вошедшего в систему (тот, который идентифицирован на устройстве), НО, когда я пытаюсь заменить «я» на «ANOTHER_USER_ID» в следующем URL-адресе @"https://graph.facebook.com/me/feed" возвращает только пустое поле данных (нет узел «сообщение»).
«Странный» факт заключается в том, что я могу успешно получить доступ к любой ленте корпоративного типа (например, «кокакола»), используя @"https://graph.facebook.com/cocacola/feed".
Итак, мой вопрос: как получить доступ к ленте «простого» пользователя (например, «shireesh.asthana»), чтобы я мог прочитать его «сообщение»?
Мой процесс до сих пор:
- Создайте приложение на странице https://developers.facebook.com/, чтобы получить AppID.
- Используйте этот AppID в моем коде, чтобы иметь возможность отправлять запрос с помощью SLRequest.
Ниже приведен код, который я сейчас использую:
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account
accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
// Specify App ID and permissions
NSDictionary *options = @{
ACFacebookAppIdKey: @"1111111111111", // My AppID here
//ACFacebookPermissionsKey: @[@"read_stream"],
ACFacebookPermissionsKey: @[@"email", @"read_stream"],
ACFacebookAudienceKey:ACFacebookAudienceFriends
};
[account requestAccessToAccountsWithType:accountType
options:options completion:^(BOOL granted, NSError *error)
{
if (granted == YES)
{
NSArray *arrayOfAccounts = [account
accountsWithAccountType:accountType];
if ([arrayOfAccounts count] > 0)
{
ACAccount *facebookAccount = [arrayOfAccounts lastObject];
// I want the messages and the author
NSDictionary *parameters = @{@"fields": @"message,from"};
NSURL *feedURL = [NSURL URLWithString:@"https://graph.facebook.com/HERE_THE_USER_ID/feed"]; // Work with "cocacola" but not with "shireesh.asthana"
SLRequest *getRequest = [SLRequest
requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:feedURL
parameters:parameters];
getRequest.account = facebookAccount;
[getRequest performRequestWithHandler:
^(NSData *responseData, NSHTTPURLResponse
*urlResponse, NSError *error)
{
dataSource = [NSJSONSerialization
JSONObjectWithData:responseData
options:NSJSONReadingMutableLeaves
error:&error];
// Reach the main queue to process result
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Read %d messages", [dataSource[@"data"] count]);
if ([dataSource[@"data"] count] != 0) {
// Do stuff in case of success...
} else {
// Do stuff in case of ERROR...
}
});
}];
} else {
// Case of no facebook account on the device...
}
} else {
// User don't grant the app to access its facebook info...
}
}];