понедельник, 4 февраля 2013 г.

Экспорт контента



У меня на работе была одна довольно интересная задачка. Звучала она примерно так: "сделать автоматический экспорт контента в социальные сети". Как делать экспорт контента вручную, мы все знаем, а вот сделать автоматически не так-то просто на самом деле. Существуют определённые ограничения.

Во-первых, в Google Plus не имеется никакого способа автоматически постить контент. Google+ API бывает только на чтение. То, что там что-то пилят сбоку чего-то непонятное для Google Plus History, не считается - этим нельзя пользоватся, да я и даже не знаю, что это такое, но, по-моему, это не сам Google Plus.

Во-вторых, в "Одноклассниках" настолько убогая документация, что даже документация к Битриксу кажется неплохой по сравнению с одноклассниковской. Как оно работает, я не смог проверить, потому что в документации написано "нажмите вон на ту кнопку", а если открыть сайт на самом деле, то той кнопки там и нет. Насхлэданоу, парханты.

В-третьих, Twitter остался в прошлом веке, потому что в него логин работает на OAuth первой версии. То есть под него надо писать отдельный механизм авторизации. Я рассчитывал, что сделаю один большой класс типа COAuth20Provider, от него отнаследую соответствующий классы для соцсетей... не вышла красивая архитектура. Документация там тоже убогая на редкость, но раз уж твиттер не вписывался в мою красивую систему классов, я взял просто открытый код на PHP для работы с Твиттером и пришпандорил его сбоку (КоОП - костыльно-ориентированное программирование).

Остались Facebook и Вконтакте. И там и там документация неплохая. Только Facebook месяц не мог мне прислать SMS с кодом подтверждения, чтоб я записался в разработчики и получил доступ к созданию приложений и прочим полезностям. В итоге я в Facebook не ковырялся ещё, но, судя по всему, там нормально всё должно быть. Я надеюсь. А вот Вконтакте... там все сторонние приложения для работы с соцсетью подразделяются на три большие группы - встраиваемые на саму страницу Вконтакте (эти мне не интересны), веб-сайты и стэндэлоны. Причём последние два различаются адресом страницы колбэка, используемой в первой фазе авторизации по протоколу OAuth 2.0. Если указываешь адрес страницы своего сайта, куда приходит колбэк, то твоё приложение - веб-сайт. Указываешь blank.html на самом Вконтакте - standalone.

По причине, которая у меня совершенно не укладывается в голове, приложениям-сайтам недоступны функции постинга на стену. Стендалонам - пожалуйста, хоть всю стену изсрите, а сайтам нельзя. В принципе, я догадываюсь, что это сделано из-за обилия чёрных сеошников, спамеров и прочей пидарасни, которые пишут говноскрипты и загаживают стены пользователям Вконтакта, которые забрели на их сраные тайпсквоттерные сайты в поисках порнушки или скачать музычки нахаляву. Глупые пользователи, для этих целей есть большие ресурсы с огромным выбором контрафактного контента и хорошей модерацией, а они всё шарятся по каким-то тёмным говённым закоулкам по привычке.

Если коллбэк пришёл на какую-то страницу во Вконтакте, то мой сайт, который, по задумке, должен автоматически экспортировать контент в социальные сети, не знает, какой там access_token. Если попробовать обхитрить Вконтакте и открывать страницу с коллбэком как попап, чтоб иметь к ней доступ, за Вконтакте вступаются политики безопасности джаваскприпта - это типичный XSS, который во всех нормальных браузерах давно запрещён. Так что хоть разбейся, но на стену сайт ничего постить не сможет. Из остатков экспериментов на работе я собрал новую систему авторизации для своего project3 (Вконтактик для линуксоидов), но она пока работает через раз почему-то.

Комментариев нет:

Отправка комментария

Ублюдочный Гугл поломал форму комментариев. Извините.