Facebook SDK 4.0 ShareDialog

Я хочу поделиться изображением из своего приложения для Android с помощью facebook SDK 4.0. Я заставил его работать с ShareDialog, но, если у пользователя не установлено приложение FB, в соответствии с Developers.facebook, SDK вместо этого должен использовать диалоговое окно Web Share:

В предыдущих версиях SDK для Android ваше приложение должно было проверять наличие собственного установленного приложения Facebook, прежде чем оно могло открыть диалоговое окно «Поделиться». Если у человека не было установлено приложение, вам нужно было предоставить свой собственный код для вызова резервного диалогового окна.

Теперь SDK автоматически проверяет родное приложение Facebook. Если он не установлен, откроется диалоговое окно Web Share:

Но ничего не происходит, когда я удаляю приложение FB и пытаюсь поделиться.
Вот мой код:

            ShareDialog shareDialog = new ShareDialog(this);

            BitmapFactory.Options bmOptions = new BitmapFactory.Options();

            bmOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;

            Bitmap image = BitmapFactory.decodeFile(imagePath, bmOptions);

            SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();

            SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

            shareDialog.show(content, ShareDialog.Mode.AUTOMATIC);

ИЗМЕНИТЬ

Есть ли способ поделиться фотографией на Facebook без установленного приложения facebook?


person filipst    schedule 08.04.2015    source источник
comment
вы получили какую-либо ошибку? проверьте свой logcat после выполнения этого кода   -  person Heshan Sandeepa    schedule 08.04.2015
comment
Я ничего не понимаю. Нет ошибок.   -  person filipst    schedule 09.04.2015
comment
привет, нам нужно какое-то специальное разрешение, чтобы использовать это? с новым facebook SDK 4.0? @filipst   -  person Rat-a-tat-a-tat Ratatouille    schedule 16.04.2015
comment
Если вы используете Facebook SDK 4.0 и делитесь через ShareDialog, вам не требуется никаких специальных разрешений. ShareDialog использует приложение Facebook для Android, чтобы делиться контентом на своей стене. Но если вы хотите иметь возможность делиться, даже если у пользователя не установлено приложение Android для Facebook, вам нужно новое разрешение publish_actions. @Rat-a-tat-a-tat Рататуй   -  person filipst    schedule 16.04.2015
comment
@filipst - спасибо, просто чтобы подтвердить, это означает, что если я преобразую изображение файла в растровое изображение и использую приложение facebook для обмена, мне не потребуется никакого специального разрешения, верно? На самом деле я пытался это сделать, но затем я получил сообщение об ошибке, когда пытался войти в систему, используя логин с чтением ..   -  person Rat-a-tat-a-tat Ratatouille    schedule 17.04.2015
comment
Нет, никаких специальных разрешений не требуется. Какую ошибку вы получили? Вы можете добавить это, чтобы проверить, может ли отображаться ShareDialog: if (shareDialog.canShow(MainActivity.class)){...} else{//сказать пользователю, что у него нет приложения fb}   -  person filipst    schedule 17.04.2015
comment
@filipst, значит, с кодом в вашем вопросе вы можете поделиться фотографией в Facebook (если у пользователя есть приложение FB)? Я попробовал ваш код, не могу заставить его работать. :/ Я нажимаю кнопку «Поделиться», но ничего не происходит.   -  person Azurespot    schedule 28.05.2015
comment
@Noni A. Попробуйте код ниже в ответе.   -  person filipst    schedule 28.05.2015
comment
@filipst, спасибо, я пытался, но при нажатии не появляется диалоговое окно «Поделиться».   -  person Azurespot    schedule 30.05.2015
comment
Вы нашли какое-нибудь решение, чтобы поделиться фотографией без установленного приложения facebook?   -  person prasanthMurugan    schedule 23.01.2017


Ответы (4)


Пожалуйста, внимательно прочитайте документы SDK. Вы не можете поделиться фотографией с помощью sharedialog без установленного приложения Facebook.

Ссылка: https://developers.facebook.com/docs/sharing/android

Фотографии

Люди могут делиться фотографиями из вашего приложения на Facebook с помощью диалогового окна «Поделиться» или с помощью пользовательского интерфейса.

Размер фотографий должен быть не более 12 МБ.

Людям необходимо установить родное приложение Facebook для Android версии 7.0 или выше.

person Hoài Bá Đình    schedule 08.04.2015
comment
Значит, нет другого способа поделиться фотографией? Что делать, если у пользователя не установлено приложение FB? - person filipst; 09.04.2015

Я нашел решение:

BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bmOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;

    Bitmap image = BitmapFactory.decodeFile(imagePathForShare, bmOptions);

    SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();

    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();

    Toast.makeText(getApplicationContext(), getString(R.string.facebook_uploading), Toast.LENGTH_SHORT).show();

    ShareApi.share(content, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result)
        {
            Toast.makeText(getApplicationContext(), getString(R.string.facebookSuccessful), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel()
        {
            Log.v("FACEBOOK_TEST", "share api cancel");
        }

        @Override
        public void onError(FacebookException e)
        {
            Log.v("FACEBOOK_TEST", "share api error " + e);
        }
    });
person filipst    schedule 09.04.2015
comment
но вам потребуются разрешения на публикацию от пользователя для использования ShareApi - person rod_torres; 28.04.2015
comment
Да, я знаю. Невозможно поделиться без приложения facebook и не запрашивать разрешения на публикацию. - person filipst; 28.04.2015
comment
Привет @filipst, с этим решением общий диалог не будет представлен. Это правильно? - person NamNH; 10.08.2015
comment
Вы нашли какое-нибудь решение, чтобы поделиться фотографией без установленного приложения facebook? - person prasanthMurugan; 23.01.2017

Попробуй это:

Я столкнулся с той же проблемой, и я могу сказать, что есть некоторые проблемы в SharePhotoContent API facebook. Вы можете поделиться изображением с помощью ShareLinkContent.

ShareLinkContent linkContent = new ShareLinkContent.Builder()
                    .setImageUrl("Your url")
                    .build();
shareDialog.show(linkContent);
person Aniket Dhandhukia    schedule 29.02.2016

Вы можете использовать диалог общего доступа для обмена фотографиями.

Попробуй это

 Bitmap image = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
                    SharePhoto.Builder photoBuilder = new SharePhoto.Builder();
                    photoBuilder.setBitmap(image);
                    photoBuilder.setCaption("HBD Caption");
                    final SharePhoto sharePhoto = photoBuilder.build();
                    SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(sharePhoto).build();
                    mShareDialog.show(content);

Чтобы добавить подпись, вам нужно добавить разрешения на публикацию из Facebook. Если вы этого не сделаете, ваше изображение будет опубликовано без подписи.

Ссылка: https://developers.facebook.com/docs/graph-api/reference/user/permissions/

person Laraib Azad    schedule 01.12.2016