Как прочитать общедоступную временную шкалу любого пользователя facebook с помощью платформы iOS Social?

Я действительно потратил часы, чтобы попытаться решить этот вопрос безуспешно! Я просто хочу иметь возможность читать временную шкалу любого пользователя (публичные сообщения) из 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»), чтобы я мог прочитать его «сообщение»?

Мой процесс до сих пор:

  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. Шириш Астана (работает в Facebook), не имеет общедоступных сообщений.

person Sahil Mittal    schedule 13.09.2013
comment
спасибо за ваш пост О ленте Ширеша Астаны я ссылался на его собственный пост: stackoverflow.com/a/14188483/1749367, но вы совершенно верно, так как сейчас в его ленте нет публичного сообщения. - person helper; 14.09.2013
comment
М рад, что это помогло. Ваше здоровье! - person Sahil Mittal; 14.09.2013