2015-01-19 4 views
2

Моя ситуация выглядит следующим образом:Facebook SDK IOS - ошибка при запрашивающие разрешение опубликовать после открытия сессии с правами на чтение

  1. На первый пользователь успешно входит в Facebook, попросив разрешения на чтение user_friends и email. Я использую метод openWithBehavior:FBSessionLoginBehaviorUseSystemAccountIfPresent. Все соответствующие пользовательские данные и информация о пользователях FB, которые вошли в систему, успешно обрабатываются
  2. Затем, когда пользователь удаляет кнопку, опубликовано разрешение publish_actions. Я читал, что reauthorizeWithPublishPermissions метод является устаревшим, поэтому я попытался с рекомендованным requestNewPublishPermissions:defaultAudience:completionHandler: методом, и я закончил с постоянно получаю ошибку с сообщением:

FBSDKLog: FBSession: запрос разрешения на публикующих или управлять разрешениями содержит неожиданный права на чтение

Итак, что я делаю неправильно? Должен ли я выйти из системы, а затем снова войти в систему, запросив только разрешение на публикацию? Или мне нужно установить дополнительный параметр на панели приложений? Должен ли я как-то явно переключиться на песочницу, так как мое приложение уже находится в AppStore? (я знаю, что следующая версия моего приложения должна быть рассмотрена FB в связи с просьбой publish_actions разрешения.)

+0

'(аннулируются) requestNewReadPermissions' - обратите внимание, как он говорит _Read_ там ...? – CBroe

+0

Я ошибся при вводе первоначального вопроса, поэтому исправил его. Я все еще получаю такую ​​же ошибку. Помоги пожалуйста! – SvenMajeric

ответ

0

Используйте следующий код после запроса разрешений.

 if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) { 
     // TODO: publish content. 

    } else { 
     FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init]; 
     [loginManager logInWithPublishPermissions:@[@"publish_actions"] 
           fromViewController:self 
              handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
               //TODO: process error or result. 


              }]; 
    }