Наистина трябва да прекарам часове, за да се опитам да разреша този въпрос безуспешно! Просто искам да мога да чета хронологията на всеки потребител (публични съобщения) от facebook... Технически (за простота) бих предпочел да използвам рамки само от iOS sdk (т.е. без да се налага да използвам тази във facebook). Затова в момента използвам само Social.framework и Accounts.framework
Това, което успях да направя досега, е да прочета хронологията на facebook на текущо влезлия потребител (този, идентифициран на устройството), НО когато се опитам да заменя „аз“ с „ANOTHER_USER_ID“ в следния URL адрес @"https://graph.facebook.com/me/feed" връща само празно поле за данни (не възел "съобщение").
„Странният“ факт е, че мога успешно да достигна до всяка емисия от корпоративен тип (като „cocacola“ например), използвайки @"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...
}
}];