"Приложение должно запросить базовое разрешение на чтение во время установки"
Я использую встроенные в 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.}
Что здесь происходит? Отображение двух всплывающих окон разрешений пользователя-это далеко не идеальный пользовательский опыт.
3 ответа:
В самый первый раз вы должны попросить разрешения на чтение. Вы не можете изначально авторизировать пользователя с любым типом разрешений на публикацию/запись. Что вы должны сделать после этого, там, где это имеет смысл в вашем приложении, попросите разрешения publish_stream. Определенно не делайте первоначальное разрешение, а затем немедленно попросите разрешения publish_stream.
Смотрите эту заметку в https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.0-to-3.1/, раздел " просьба о прочтении & Разрешения На Запись Отдельно". Даже если это относится к Facebook SDK для iOS, это расширение того же требования во встроенном фреймворке.
Я хотел бы добавить, что в документах 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.
Неспособность сделать это приводит к той же ошибке.
В последнем 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-массив строк, представляющих чтение разрешения для запроса во время потока проверки подлинности. Основная информация разрешение должно быть явно запрошено при первом входе в систему, и нет более длинный вывод, (при условии активной миграции.) Это не допускается. чтобы передать этому методу разрешения на публикацию.