Facebook SDK 3.0 — дополнительные разрешения

Есть задача предоставить токен доступа на стороне сервера с несколькими разрешениями (несколько на чтение и публикацию). В версии 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?.. или я делаю что-то не так?


person Nicolas Siver    schedule 25.02.2013    source источник


Ответы (2)


Может быть поздно для этого ответа. У меня была похожая проблема с FB SDK 3.0 для Android. Это была ошибка в SDK, и они исправили ее в FB SDK 3.0.1 для Android, выпущенном 20 марта. В журнале изменений упоминается:

Диалоговое окно «Вход в веб-представление» содержит информацию о маркере для сценариев, в которых запрашиваются новые разрешения. Это избавляет пользователя от необходимости вводить свои учетные данные для входа всякий раз, когда запрашиваются новые разрешения для сеанса.

Повторите попытку после обновления. Скачайте новый SDK здесь.

person rarp    schedule 01.04.2013
comment
Хм, лучше, команда Facebook SDK дает разработчикам один метод, чтобы мы могли избежать цепочки разрешений. Но в любом случае спасибо ;) - person Nicolas Siver; 01.04.2013

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

Кстати, я собрал серию из трех коротких статей, объясняющих, как открыть сеанс Facebook, запросить дополнительные разрешения и так далее. Вот первое.

person Adil Hussain    schedule 28.02.2013