Как да чета публична хронология на всеки потребител на Facebook с помощта на iOS Social framework?

Наистина трябва да прекарам часове, за да се опитам да разреша този въпрос безуспешно! Просто искам да мога да чета хронологията на всеки потребител (публични съобщения) от 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"), така че да мога да прочета това "съобщение"?

Моят процес досега:

  1. Създайте приложение на https://developers.facebook.com/, за да получите AppID
  2. Използвайте този 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...
         }
     }];

person helper    schedule 13.09.2013    source източник


Отговори (1)


Така че въпросът ми е как да стигна до емисията на "прост" потребител (например "shireesh.asthana"), така че да мога да прочета това "съобщение"?

Причината може да е -

  1. <user> няма обществени публикации,

  2. <user> има Изключване на платформата в Настройки на приложението

(разбира се, <user> тук не е потребителят в сесията)

P.S. Shireesh Asthana (който работи във Facebook), няма публични публикации

person Sahil Mittal    schedule 13.09.2013
comment
благодаря за твоя пост. Относно емисията на Shireesh Asthana имах предвид собствената му публикация: stackoverflow.com/a/14188483/1749367, но вие сте напълно прав, тъй като сега няма публично съобщение в неговия канал. - person helper; 14.09.2013
comment
Радвам се, че помогна. наздраве! - person Sahil Mittal; 14.09.2013