Share it!

суббота, 24 декабря 2016 г.

Об одном недостатке VK API вслух / Хабрахабр

Об одном недостатке VK API вслух / Хабрахабр:



Разработка → Об одном недостатке VK API вслух

Vkontakte Logo

Доброго времени суток, уважаемые жители Хабра! 

Начну я с того, что, в моем понимании, Хабр — это чудовищное по своей мощности оружие. Не в смысле того, что им можно кого-то убить. Конечно, нет. Просто он дает самым обычным разработчикам возможность поделиться своими мыслями с потрясающе широкой аудиторией. Причем не имеет особого значения, о чем идет речь. Будь то бережно создаваемый в последние полгода “на коленке” собственный проект или новость о новинках от Google и Apple — все равно. Вас услышат, потому что здесь все равны перед кармой и рейтингом, у каждого есть право слова и голоса. Демократия во всей ее красоте да и только. Но, как и любым оружием, Хабром нужно пользоваться крайне аккуратно. Иначе отдача замучает =) 

Я долго подбирал тему, достойную того, чтобы испытать всю силу хабравлияния, и вот, кажется, нашел. Давайте поговорим об API всем известной социальной сети ВКонтакте и о том, что в нем мне кажется нелогичным или, быть может, слегка рудиментарным, подлежащим пересмотру и изменению? Ниже я обязательно расскажу, как и почему пришел к такой мысли.

Внимание! Желающие обсудить последние события из жизни Павла Дурова, ФСБ или знакомых школьников! Прошу вас, ради всего ценного, что есть в вашей жизни, не нажимайте на ссылку “Читать далее”! Я бы очень хотел, чтобы этот пост достиг своей цели, а скандальность — последнее, что для этого нужно.



Социальные сети. Понятие, вошедшее в нашу жизнь так же плотно, как смартфон или компьютер. Миллионы пользователей. Гигабайты информации. Неисчислимое множество моделей применения. Социальные сети особенно ценны тем, что позволяют разработчикам постучаться к своим пользователям прямо в дверь: «Эй, привет! Посмотри какое классное приложение! Оно изменит твою жизнь к лучшему. Я обещаю!». Это потрясающе! В конце концов мы ведь именно для этого пишем программы? Чтобы делать мир лучше? Нет, конечно, нам нравится и то, что за нашу работу неплохо платят. Но душу греют не суммы на счету, а цифры на счетчике посещений. 

Когда я впервые познакомился с API Вконтакте, мне показалось, что лучшей находки в моей карьере еще не было. Сколько невероятных идей пришло ко мне в голову с первых же строчек документации! Конечно, они не идут ни в какое сравнение по своей креативности, например, с вот этой. Но все же =) Тогда я сделал то, что сделал бы любой из вас на моем месте: начал увлеченно программировать. Однако будущее оказалось не таким безоблачным, как мне бы хотелось. За простым и изящным REST-интерфейсом крылись суровые и далеко не всегда мне понятные правила и ограничения.

Все методы API Вконтакте делятся на два больших класса: обычные и расширенные. Раньше это было видно прямо из документации: описания методов из разных классов находились в разных разделах, — но в результате последнего обновления различие визуально сгладилось. Теперь у тех методов, что раньше назывались расширенными, просто указано в описании, что они доступны исключительно для standalone-приложений: мобильных или десктопных. А если вы решили написать глубоко завязанное на ВК веб-приложение, которому требуется работать, скажем, со стеной или сообщениями пользователя? Тут вас поджидает разочарование. 

Для работы с большинством методов VK API приложению потребуется токен. В общем случае процесс его получения выглядит так:

  1. Приложение отправлят пользователя на AUTHORIZE_URL, в параметрах указав CALLBACK_URL;
  2. Вконтакте переадресует пользователя на страницу, где он подтверждает права доступа приложения;
  3. Вконтакте переадресует пользователя на CALLBACK_URL, в параметрах передавая токен и срок его жизни;
  4. Приложение, получив запрос на CALLBACK_URL, понимает, что это от ВК, вытаскивает токен и запоминает его.


Однако, для того, чтобы получить токен, обеспечивающий доступ к расширенным методам, в качестве callback-адреса вам придется указать https://oauth.vk.com/blank.html. Таково требование API. Поскольку мобильные/декстопные приложения, по задумке авторов, используют для получения токена встроенный браузер (имеется в виду, например, компонент webkit), то у них проблем нет: отловил редирект, извлек информацию о пользователе и токен, сохранил все это дело и радуйся. У веб-приложений так, очевидно, не получится.

У меня возникает логичный вопрос: зачем? Почему было введено такое ограничение и почему оно существует до сих пор? Могу предположить, что доступность вызова произвольных методов с десктопов и мобильников имеет под собой простое обоснование: это толкает разработчиков на создание альтернативных клиентов и всевозможных мессенджеров. Так почему бы не убрать этот запрет для веба? К чему ставить лишние палки в колеса фантазии разработчиков? Отнюдь не все удобные и хорошие идеи можно и нужно поставлять как standalone, согласитесь? На волне повсеместного «ухода в облака» и создания веб-приложений, обладающих потрясающе широкой функциональностью и удобным UI на HTML5, это ограничение выглядит как-то… неудобно.

С вопросом: «А нельзя ли как-то все таки получить токен с нужными привелегиями, если я честный парень и клятвенно обещаю не рассылать спам, не создавать ботов и молиться правильным богам?», — я и обратился в службу поддержки Вконтакте. И мне, — тут барабанная дробь и виртуальный плюсик в карму ВК, — ответили, причем довольно быстро и вежливо.



Тут бы, казалось, мне пойти курить и думать, какой бы хак посуровее вкрутить, чтобы таки заполучить нужный мне токен. Так бы и сделал, но неожиданно на меня снизошел дзен. Я решил попытаться что-то изменить. Проблема состоит в том, что API — это прежде всего интерфейс, предназначенный для сторонних разработчиков. Им пользуюсь не только я, но и тысячи других программистов, ежедневно клепающих всякие хаки и применяющих грязные трюки, чтобы решить очень простую и логичную задачу, принеся счастье и улыбки в дом конечного пользователя. Логично предположить, что эти самые разработчики должны иметь возможность как-то влиять на эволюцию инструмента, которым им предлагается пользоваться. Имеющееся сейчас разграничение на обычные и расширенные методы создает ощущение… ну… как от кофейного автомата, который почему-то не умеет выдавать сдачу: вроде кофе и можно купить, но придется всем отделом мелочь собирать. 

Надеюсь, что мой скромный пост сподвигнет ВК как минимум к диалогу с разработчиками, а, в идеальном случае, и к снятию ограничений с веб-приложений. Ребята, искусственное ограничение возможностей — это и правда очень и очень неудобно.

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


'via Blog this'

пятница, 23 декабря 2016 г.

Заработок на постах, лучшие форумы с оплатой за сообщения | Webtrafff.ru

Заработок на постах, лучшие форумы с оплатой за сообщения | Webtrafff.ru:

'via Blog this'

Автопостинг из RSS в социальные сервисы – Дима Стефанцов

Автопостинг из RSS в социальные сервисы – Дима Стефанцов:

Автопостинг из RSS в социальные сервисы

Есть простая задача: нужно чтобы читателям было максимально просто узнавать о выходе новой статьи на сайте.
Есть и простое решение: после каждой опубликованной статьи идти в каждую социальную сеть (навскидку это как минимум вконтакте, твиттер, фейсбук, гугл+). 
Но мы не ищем лёгких путей.
Хочется автоматизации. К счастью, добрую часть этого пути я уже прошёл, так что пользуйтесь на здоровье.

Обзор ситуации на рынке сервисов автопостинга и постинга из RSS

Сервисы для авто-постинга в социальные сети можно, грубо говоря, разделить на два типа: русские и иностранные.
Иностранные отличаются проработанностью, хорошим интерфейсом, гибкими тарифными планами с возможностью пользоваться бесплатно, стабильностью работы и повальным отсутствием поддержки русских социальных сетей.
Русские же, как правило, нестабильные, с неудобным интерфейсом, отсутствием критично-важных функций. Ну а если что-то сделано более-менее хорошо, то у наших сервисов включается Дикий Капитализм. Бесплатных тарифов нет.
А зря. Всем настоящим капиталистам известно, что человеку стоит сначала давать пользу, и только потом он охотно начнёт расставаться с деньгами.
Капиталисты применяют это в оффлайн бизнесах. А уж в онлайне-то, где работа роботов фактически бесплатная, просто глупо не делать этого.
Один из западных сервисов даже рисует картинку, куда идут заплаченные им средства. Тут видно, что функционирование уже сделанного сервиса (HOSTING) практически ничего не стоит:

Технология автоматизации работы с социальными сетями

Можно представить себе три варианта.
  1. После того, как мы написали новую статью, мы идём в каждую социальную сеть и вручную публикуем обновления для наших подписчиков.
  2. После того, как мы написали новую статью, мы идём в Центральный Пункт Управления, туда постим новость, которая будет автоматически распространена по всем нашим социальным сетям.
  3. Мы написали новую статью и ничего делать не надо, роботы сами понимают, что новая статья появилась, рассылают новости о ней по всем социальным сетям.
Третий вариант представляется наиболее предпочтительным.
Как робот может узнать, что у нас появилась новая статья? Для этого есть стандартный механизм, называется RSS. У каждого нормального блога есть несколько уровней. На верхнем уровне его видят люди: с красивыми картиночками, текстами, комментариями. Но есть и более низкие уровни, как мотор машины, где те же самые данные представлены в удобном для роботов виде. Вот пример: https://dima.stefantsov.com/feed/
Так что для автоматического распространения обновлений в соцсети мы будем использовать RSS.

Лучшие сервисы для автопостинга из RSS в социальные сети

Перейдём сразу к победителям. 
Международная сцена:
dlvr.it (сокращение от deliver it=доставь это
Сервис умеет вообще всё, что нужно. Работает стабильно и надёжно. Бесплатно может собирать до 5 лент RSS, постить в 3 разные социальные аккаунта. Отдельно хочется отметить гибкую мощную систему настроек. Можно отключить сокращатель ссылок, чтобы постились оригинальные ссылки на статьи.

К сожалению, чтобы публиковать в Google+, за деливер.ит нужно платить, поэтому для нашей бесплатной миссии придётся использовать ещё и другой сервис:
hootsuite.com (тонкий юмор; как известно twitter=щебетатель, как птичка; в это время, hoot suite=набор для уханья, как сова) 
Если за этот сервис платить, то он не намного хуже нашего победителя. Правда, к сожалению, я так и не смог отключить проприетарный сократитель ссылок. Прощай, нормальное SEO. Но зато бесплатная версия хутсьюта позволяет автоматически постить в Google+ из RSS. То, что надо!
Остаётся последний бастион: русские социальные сети. В первую очередь, вконтакте. Многообещающими кажутся сервисы https://amplifr.com/ и http://seolit.ru/, но они страдаютнаслаждаются Диким Капитализмом, бесплатных тарифов нет. Упоминаю их только потому, что остальные русские альтернативы даже на бумаге не лучше.
Для бесплатного постинга ограничимся вконтакте. На данный момент я остановился на сервисе:
time2post.ru (в переводе [настало] время публиковать
На бумаге – очень даже неплохой сервис. Бесплатный. На практике – твиттер отваливается, в линкедин вообще не публикует, а вконтакте во время тестирования вместо одного сообщения запостил сразу штук 20.
Если такое случится хоть раз в продакшене, немедленно прекращу им пользоваться. Пока что полёт нормальный.
Альтернатива для вконтакте: можете попытаться написать в техподдержку вконтакте, чтобы они подключили вашей группе возможность автопостить из RSS. Вконтакте в принципе умеет это стандартными способами.

На этом наш бесплатный комплект завершён, как только я опубликую эту статью, ссылки на неё автоматически появятся в моём твиттере, группе вконтакте, группе фейсбука, странице Гугл+. Это те социальные сети, которые мне кажутся самыми необходимыми.
Моему читателю не должно быть нужно приспосабливаться под меня. Я приспособлюсь под него, я донесу до него свой контент именно там, где ему удобно его получать.
'via Blog this'