как поделиться фотографией через facebook android sdk без использования кнопки входа в приложение

Как поделиться фотографией с facebook с помощью android sdk, не добавляя кнопку входа в facebook в моем приложении. (Я хочу, чтобы они заходили в приложение facebook для авторизации и возвращались, когда нажимали кнопку «Поделиться», а не сначала входили в систему, а затем нажимали «Поделиться» в 2 шага). В частности, я бы сделал публикацию с открытым графиком в Facebook для /me/photos, чтобы она загружалась в мой альбом приложений по умолчанию. Однако я получаю сообщение об ошибке сеанса без входа в систему, даже когда пользователь нажимает на запрос аутентификации facebook.

final Session session = Session.getActiveSession();


Session.openActiveSession(this, true, new Session.StatusCallback() {

    @Override
    public void call(final Session session, final SessionState state,
            final Exception exception) {
        Request request = Request.newUploadPhotoRequest(session, image, new Request.Callback() {
            @Override
            public void onCompleted(Response response) {
                  Toast.makeText(getApplicationContext(), "Fact shared", Toast.LENGTH_SHORT).show();
              }
        });
        request.executeAsync();
    }
});

person MonkeyBonkey    schedule 21.02.2013    source источник
comment
Удалось ли вам это сделать? Я ищу точно такое же решение для этого   -  person Casper    schedule 23.12.2013


Ответы (1)


Есть пара проблем с вашим кодом:

  1. Чтобы опубликовать фотографию, вам нужны разрешения на публикацию, что требует еще одного вызова requestNewPublishPermissions после первого открытия сеанса.

  2. Вы делаете запрос сразу в методе call(), не проверяя, является ли session.isOpened(). Это проблематично, потому что:

    а. сеанс проходит через множество состояний (включая OPENING, OPENED и т. д.), каждое из которых приводит к вызову call(), и вы можете делать запросы только тогда, когда он находится в состоянии OPENED или OPENED_TOKEN_UPDATED;

    б. могут быть исключения во время открытия сеанса (например, если пользователь отменяет), что может привести к закрытию сеанса. Вы должны охранять свои запросы session.isOpened() проверкой.

person Ming Li    schedule 22.02.2013