Почему requestAccessToAccountsWithType facebook не работает с недопустимым разрешением: photo_upload

Я пытаюсь получить доступ к Facebook для публикации изображений на странице из приложения iOS. Но пока я даже не могу заставить его дать мне нужные мне разрешения.

Я много искал, включая Процедура публикации iOS 6 в Facebook заканчивается ошибкой remote_app_id не соответствует сохраненному идентификатору и Facebook Graph Api Загрузка фотографий на фан-страницу (IOS), но ничто в тех или иных сообщениях не решает эту проблему.

Вот бит авторизации кода:

ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

NSDictionary *options = @{
                          ACFacebookAppIdKey: @"xxxxxxxxxxxxxx",
                         ACFacebookPermissionsKey: @[@"manage_pages"],
                          ACFacebookAudienceKey: ACFacebookAudienceEveryone
                          };

[accountStore requestAccessToAccountsWithType:accountType options:options completion:^(BOOL granted, NSError *error)
 {
     if (granted)
     {
         NSDictionary *options = @{
                                   ACFacebookAppIdKey: @"xxxxxxxxxxxxxx",
                                   ACFacebookPermissionsKey: @[@"photo_upload"],
                                   ACFacebookAudienceKey: ACFacebookAudienceEveryone
                                   };

         [accountStore requestAccessToAccountsWithType:accountType options:options completion:^(BOOL granted, NSError *error)
          {
              if (granted)
              {
                   // then do the upload - but it never gets here
              }
              else
              {
                   // handle error - this is where it ends up
              }
          }];
     }
     else
     {
          // handle error
     }
 }];

Как было предложено в некоторых других сообщениях об этом, я сначала запрашиваю разрешения на чтение, а затем на запись. Он получает разрешение manage_pages в порядке.

Когда я запрашиваю разрешение photo_upload, всплывает предупреждение о разрешениях Facebook с просьбой подтвердить, что он может публиковать сообщения от моего имени, и я нажимаю «ОК», но этот блок запроса разрешения возвращается с предоставленным значением FALSE.

Полное сообщение об ошибке, которое я получаю в этот момент, звучит так: «Сервер Facebook не смог выполнить этот запрос на доступ: недопустимое разрешение: photo_upload».

На сайте приложения Facebook я думаю, что сделал все, что нужно: я создал свое приложение и получил AppId, добавил iOS в качестве платформы и установил BundleId на тот же, который использует приложение iOS, и на вкладке «Дополнительно». установите его как родное приложение.

У кого-нибудь есть идеи, что я делаю неправильно?


person Simon East    schedule 05.08.2014    source источник


Ответы (1)


Используйте publish_actions как ваше разрешение. Новый Facebook API предлагает использовать publish_actions вместо publish_stream, когда это применимо. publish_stream следует включать, если вы хотите добавить следующие возможности: публиковать сообщения в ленте друзей, публиковать вопросы, создавать заметки и публиковать контент на мероприятиях или в группах.

person urnotsam    schedule 05.08.2014
comment
Я попытался изменить photo_upload на publish_stream, и у меня возникла та же проблема, но теперь с ошибкой Invalid permisson: publish_stream. - person Simon East; 05.08.2014
comment
publish_stream может не работать для того, что вы делаете. Возможно, стоит попробовать publish_action. Не уверен, что это решит вашу проблему, но похоже, что ваша проблема связана с разрешением, поэтому стоит изучить publish_action. Вот обсуждение этой темы stackoverflow.com/questions/7590878/ - person urnotsam; 05.08.2014
comment
ОК, так что да, это была проблема — похоже, что сейчас также нет разрешения publish_stream — разрешение называется publish_actions. И кажется, что вы можете объединить вызов для получения manage_pages и publish_actions в одном вызове разрешений, поэтому я не думаю, что необходимость запрашивать разрешения на чтение, а затем на запись, похоже, больше не применяется. Вместо того, чтобы сбивать людей с толку, вы хотите добавить еще один ответ, но сказав publish_actions, и тогда я соглашусь с этим. - person Simon East; 05.08.2014
comment
@SimonEast Я обновил свой ответ, чтобы предложить, когда использовать publish_stream вместо publish_action. - person urnotsam; 05.08.2014
comment
Я принял это, но я думаю, что у разрешения publish_actions есть s в конце. - person Simon East; 06.08.2014