Подтвердить что ты не робот

"Приложение должно запрашивать базовое разрешение на чтение во время установки"

Я использую iOS, встроенный в рамки для подключения. После запроса разрешений "publish_stream" FB возвращает ошибку:

Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time." UserInfo=0x145ad6a0 {NSLocalizedDescription=The Facebook server could not fulfill this access request: The app must ask for a basic read permission at install time.}

Что здесь происходит? Отображение двух пользовательских всплывающих окон - это менее идеальный пользовательский интерфейс.

4b9b3361

Ответ 1

В первый раз вы должны запросить разрешения на чтение. Вы не можете сначала аутентифицировать пользователя с любыми разрешениями публикации/записи. Что вам следует делать после этого, когда это имеет смысл в вашем приложении, попросите разрешение publish_stream. Определенно не делайте первоначального разрешения, а затем сразу же запрашивайте разрешение publish_stream.

См. это примечание в разделе https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/, раздел "Запрос на чтение и запись разрешений отдельно". Хотя это относится и к SDK для iOS для Facebook, это расширение того же требования во встроенной структуре.

Ответ 2

Я хотел бы добавить, что в документах Facebook есть дополнительная оговорка:

// if a user has *never* logged into your app, you MUST include one of
// "email", "user_location", or "user_birthday".  Other read 
// permissions can also be included here.

Несоблюдение этого требования приводит к той же ошибке.

Ответ 3

В последнем SDK (v3.5) вам также необходимо передать @ "basic_info" в массиве разрешений. Раньше это подразумевалось, но не больше. Если вы этого не сделаете, вы получите сообщение "Приложение должно запрашивать базовое разрешение на чтение во время установки"

  [FBSession openActiveSessionWithReadPermissions:@[@"email", @"basic_info"]
                                 allowLoginUI:YES
                            completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                              [self sessionStateChanged:session state:state error:error];
                            }];

Из метода docs:

readPermissions - массив строк, представляющих чтение разрешений для запроса во время потока аутентификации. Основной_инфо разрешение должно быть явно запрошено при первом входе в систему, и нет более длинный вывод (при условии активной миграции). Не допускается передать разрешения публикации для этого метода.