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/