Используя Facebook SDK в Android, requestNewPublishPermissions всегда отклоняет мое разрешение на публикацию_действий

Я пытаюсь поделиться фотографией с Android через Facebook SDK, но когда я пытаюсь запросить разрешения publish_actions для открытого сеанса, Facebook возвращает обратно с отказом в разрешении, не показывая экран с запросом на публикацию от вашего имени. Почему это? и как я могу это решить? Кстати, я не получаю никаких ошибок или что-то не так в журнале.

Вот мой код:

private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
public void onShareFacebook() {
    progressDialog.show();
    Session session = Session.getActiveSession();
    if (session == null || !session.isOpened()){
        LoginButton loginFacebookButton = new LoginButton(this);
        loginFacebookButton.setPublishPermissions(PERMISSIONS);
        loginFacebookButton.performClick();
        pendingShare = true;
    }
    else if (session != null && session.isOpened()){
        facebookSharePhoto();
    }
}

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        if (pendingPublishReauthorization && 
                state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
            pendingPublishReauthorization = false;
            onShareFacebook();
        }
        else if (pendingShare){
            onShareFacebook();
        }
    } 
}

private void facebookSharePhoto(){
    pendingShare = false;

    Bitmap screenshotImage = takeScreenShot();
    String message = invokeEvent.name;

    postPhoto(screenshotImage, message, callbackShareFacebook);
}

private void postPhoto(Bitmap image, String message, Request.Callback callback) {
    Session session = Session.getActiveSession();

    if (session != null){

        // Check for publish permissions    
        List<String> permissions = session.getPermissions();
        List<String> permissionsd = session.getDeclinedPermissions();
        if (isSubsetOf(permissionsd, PERMISSIONS)){
            Toast.makeText(this, "Permisos denegados", Toast.LENGTH_SHORT).show();
            onBackPressed();
            return;
        }
        if (!isSubsetOf(PERMISSIONS, permissions)) {
            pendingPublishReauthorization = true;
            Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
            session.requestNewPublishPermissions(newPermissionsRequest);
            return;
        }

        Bundle postParams = new Bundle();
        postParams.putString("name", message);


        Log.d(TAG, "inicio getImageAsData");
        postParams.putByteArray("picture", getImageAsData(image));
        Log.d(TAG, "fin getImageAsData");

        Request request = new Request(session, "me/photos", postParams, HttpMethod.POST, callback);
        Request.executeBatchAsync(request);

    }

}

В начале я вызываю функцию:

            session.requestNewPublishPermissions(newPermissionsRequest);

Но когда обратный вызов возвращается, для сеанса здесь отказано в разрешении «publish_actions»:

        List<String> permissionsd = session.getDeclinedPermissions();
        if (isSubsetOf(permissionsd, PERMISSIONS)){
            Toast.makeText(this, "Permisos denegados", Toast.LENGTH_SHORT).show();
            onBackPressed();
            return;
        }

person Mario Velasco    schedule 12.09.2014    source источник


Ответы (1)


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

Неважно, активируете ли вы кнопку-переключатель, доступную для широкой публики, или нет. Приложение не будет доступно широкой публике, пока вы не отправите свое приложение Facebook на рассмотрение (кнопка «Начать отправку»).

Скриншот двух упомянутых мной кнопок: введите здесь описание изображения

Решение. Начните отправку своего приложения или добавьте учетную запись Facebook к роли тестировщика для своего приложения.

person Mario Velasco    schedule 15.09.2014
comment
У меня такая же проблема, но не могли бы вы сказать мне, как отправить приложение на Facebook. ? Поскольку мое приложение слишком большое по размеру. - person ghost talker; 16.04.2015