Есть задача предоставить токен доступа на стороне сервера с несколькими разрешениями (несколько на чтение и публикацию). В версии 3.0 существует 2 отдельных метода открытия сеанса: openForRead и openForPublish.
В начале приложение запрашивает права на чтение:
private void authorizeFacebook() {
if (DEBUG)
Log.d(TAG, "Facebook authorization");
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(this.createReadRequest());
} else {
Session.openActiveSession(this, true, mFacebookSessionCallback);
}
}
Но после обратного вызова статуса приложение запрашивает разрешение на публикацию:
if (session.isOpened() && !session.getPermissions().contains("publish_stream")) {
if (DEBUG)
Log.d(TAG, "Facebook, Request additional permission: Publish Stream");
session.requestNewPublishPermissions(new NewPermissionsRequest(this, Arrays.asList("publish_stream")).setCallback(mFacebookSessionCallback).setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO));
И есть огромная проблема с пользовательским интерфейсом, потому что после запроса дополнительного разрешения появляется форма входа в facebook, и пользователь должен снова вводить учетные данные... Работает ли это так, как задумано разработчиками SDK?.. или я делаю что-то не так?