Site icon AppTractor

Как поделиться историей в Facebook на Android

Facebook прекращает поддержку Graph API v2.1 30 октября 2016 года, а это значит, что некоторые проекты, которые работают на этих механизмах, требуется переписать.

Несмотря на то, что лично я часто ругаю Facebook за крайне запутанный способ ведения документации (и вообще там абсолютно все запутано!), он предоставляет довольный мощный инструмент, который, правда, иногда выглядит как стрельба из пушки по воробьям.

В одном из проектов мне пришлось переписать полностью класс по работе с Facebook — начиная от авторизации (как мы помним, класс по работе с сессиями Session канул в лету), заканчивая шарингом историй. И если с первым пунктом никаких проблем особенно не возникло (достаточно просто следовать документации и у вас все получится), то со вторым пришлось немного повозиться.

Все дело в том, что теперь для этого есть большущий инструмент, чтобы ваши друзья не смущались компьютерному языку “Ваш друг поделился с вами новостью”, а читали вполне нормальный “Ваш друг только что прочитал новость”.

Об этом и поговорим.

Кстати, в документации Facebook описано, как создать типовой пост (посмотрел фильм, послушал песню). А вот с кастомными вещами изложены только общие черты. А мне нужно именно кастом. Так что начинаем плясать.

Пляски начинаются с консоли приложения. Нам нужна вкладка Open graph.

Создадим сначала объект. Объект в понятии open graph — это то, действие над чем пользователь произвел — книга, новость, кот.

У каждого объекта есть куча свойств, их список вы получите сразу после того, как нажмете кнопку Save. Посмотрите внимательно, возможно, стандартных свойств вам хватит (type и title обязательны). В случае с котом, мы можем указать его имя и сделать этот элемент обязательным при шаринге новости.

Далее перейдем к действию (кстати в русской документации фейсбука я видел обозначение “глагол”, а объект — “существительное”). Как в случае с объектом, указываем действие и нажимаем кнопку save. У действия тоже есть список свойств (как бы дико это ни звучало), но нам надо обратить внимание на то, что мы действие производим над созданным объектом cat. Поэтому в самом низу нажимаем на Add property и добавляем свойство “кот”.

Почти готово. Осталось добавить Story.

Увидели большой список падежей? Это то, что ваши друзья в итоге будут видеть, так что нужно постараться, чтоб все было похоже на реальный язык. А можно и не стараться, как ни крути, но автоматического перевода и подстановки слов в нашей виртуальной реальности хватает.

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

Обратите особое внимание на константы SHARE_OBJECT_TYPE и ACTION_OBJECT, у меня получился не самый хороший пример. Давайте уточним какие данные надо подставлять (это очень важно).

NAMESPACE

Dashboard — Settings — Namespace

SHARE_OBJECT_TYPE

Откройте ваш объект в консоле, промотайте до самого низа, до Advanced Options. В поле Open Graph type вы найдете нужное значение.

SHARE_ACTION_TYPE

Аналогично, как для SHARE_OBJECT_TYPE, только для вашего действия нужно повторить то же самое.

ACTION_OBJECT

На той же странице настроек вашего действия, вам нужно найти созданный объект и его название как раз и будет тем, что нужно.

Вот собственно и все. При вызове метода updateStatus, откроется диалоговое окно Facebook, в котором будут находиться ваши тексты (переданные в метод), фотография, если есть. Помимо этого, пользователь может добавить свой текст в статус (если речь идет о коте, то это конечно “нам это очень понравилось”).

P.S. Ссылка на рабочий пример github — https://github.com/sashatinkoff/Facebook-share-story

P.P.S. Если увидели ошибку “Error publishing message” при отправке поста, то причина этому заключается в следующем — необходимо заапрувить добавленное действие на Facebook.

Оригинал статьи в моем блоге http://isidroid.com/share-story-on-facebook/

Exit mobile version