API
А у меня новая система комментариев. Написал ее сам, так что знание php растет с каждым днем (за тестирование хочу поблагодарить Maljar, Qusko и Spoofi). Вам, наверное, хочется спросить, какое отношение имеет это заявление к заголовку статьи API? Сейчас расскажу. Во-первых, что такое API? Эта аббревиатура расшифровывается как application programming interface. Понятней стало? Пока, наверное, не очень. Итак, все по порядку.
API - это противоположность GUI (=graphical user interface). Когда вы пользуетесь какой-то программой, там грамотно расставлены кнопочки, вы покликали мышкой и добились результата, тогда можно сказать, что у этой программы хороший GUI - графический интерфейс для пользователя. Но иногда хорошего GUI недостаточно. Приведу пример. У живого журнала есть так называемая консоль, которой иногда удобно воспользоваться. Попробуйте, например, ввести туда команду friend list. Вы получите список своих френдов. А можно, например, и забанить какого-либо пользователя, что невозможно сделать через обычный интерфейс.
Такая консоль - это еще не API, но уже не так далеко. API - это когда имеется описание, как написать программу, которая будет выполнять подобные действия автоматически. Например, добавлять 50 френдов в день. Обычному пользователю это, скорей всего, не нужно, но кому-нибудь может и пригодиться. На этом я заканчиваю краткое введение и перехожу к основной теме - API google friend connect. У меня и сейчас осталась авторизация от google friend connect, но от их родных комментариев пришлось отказаться. Почему? А потому что даже google не всегда предоставляет идеальный API.
Дальнейшая часть поста предназначена, наверное, для программистов и вебмастеров. Но если вас заинтересовала тема, продолжаем!
Если вы не знакомы с системой google friend connect, то рекомендую поглядеть на их официальный сайт. Изначально это была просто коллекция гаджетов, которые можно размещать на своем сайте. У меня и сейчас висит такой, с аватарками всех пользователей. Также имеется гаджет с комментариями. Первый наиболее очевидный недостаток такой системы - то что все эти комментарии выводятся через javascript. Это замедляет работу сайта, нарушает функциональность кнопки back, а также скрывает комментарии от индексирования - поисковые роботы не умеют выполнять скрипты. Кроме того, эти гаджеты невозможно нормально настроить - меня всегда раздражало, что по умолчанию на странице видно только начало комментария
Однако в марте google анонсировал открытие API своей системы Google friend connect. Действительно приятно; я вскоре воспользовался этим API, и у меня какое-то время висел на главное странице список последних событий блога - комментариев и лога присоединения пользователей к сайту. Здесь можно почитать про API, однако помните, что это все равно javascript. Кстати, в любом случае рекомендую "игровую площадку", на которой можно попробовать API различных служб google.
Мне этого было недостаточно, хотелось все-таки создавать комментарии на стороне сервера, поэтому я продолжил копаться в документации google и лазать по доскам разработчиков. Во-первых, обнаружилось, что google friend connect - это разновидность платформы opensocial. Opensocial - это специально разработанный протокол для создания социальных сетей, и у него, естественно есть свой API. Если говорить вкратце, то эта система рассматривает три типа объектов - people, activities и appdata. С первым все понятно, activities и appdata - это как UDP и TCP. В activities запись данных в принципе не гарантирована, туда пишут анонсы новостей. Собственно тут мы подходим к причине, по которой бызовые гаджеты от google friend connect показывают только часть комментария - они используют канал activities, в котором ограничена длина!
Перейдем к интеграции комментариев со стороны сервера. У платформы opensocial есть API для обмена данными между серверами, рекомендую посмотреть официальную документацию. Более того, я нашел хорошую статью об интеграции google friend connect на серверной стороне. Кстати, некоторые идеи из этой статьи я и сейчас использую на сайте. Однако, принципиальная проблема оказалась в том, что полные комментарии в принципе невозможно добыть через API opensocial. Я долго думал, что что-то делаю не так, но потом эту информацию подтвердил сотрудник google в официальном форуме разработчиков google friend connect.
Что делать дальше? Поскольку я горел идеей использовать opensocial API, я попытался все-таки воспользоваться серверами google и использовать appdata для хранения моих комментариев. Однако, и тут меня постигла неудача. Appdata принципиально не принимает данные от неавторизованных пользователей. То есть, пойдя таким путем, я навсегда бы лишил свой сайт возможности оставлять анонимные комментарии. Этого мне тоже не хотелось.
Поэтому было принято промежуточное решение. Авторизацию я оставил от google friend connect, а систему комментариев написал сам, теперь они хранятся у меня на сайте. Возможно, пока она у меня немного сырая, но буду дорабатывать. Зато в процессе я много что узнал про API google и opensocial, так что не считаю время потраченным зря. Готов отвечать на вопросы про устройство этих API.
Рекомендую: чтобы работать с фотошопом не нужно быть профессионалом. Убираем красные глаза на фотографии за одну минуту!
Дата: 12 мая 2009 г., категория: для вебмастеров и не только.
| ← Анонимный серфинг | Сетевые устройства → |
Комментарии
1# |
Интересная задумка и хорошая реализация. Однозначно, время зря не потрачено. Шероховатости со временем сгладятся, а польза и удовлетворение от проделанной работы, останутся.
|
2# |
Спасибо за статью. Интересует вопрос - как получить данные произвольного пользователя по его номеру? |
3# | Sander Quanzo.
|
4# | Quanzo Предполагается следующее: при выводе сообщений в форуме надо печатать имя пользователя и его аватар, а эти данные получить от гугла (с кэшированием только на время вывода страницы). Принадлежность конкретного сообщения предполагается определять по номеру пользователя ($response->entry->id).
|
5# | Sander Я подумаю над вопросом добывания данных по ID. Должно быть возможно, но там может потребоваться страшная вещь под названием OAUTH - когда GFC сервер принимает не информацию о куке пользователя, а авторизацию сервер-сервер. Я ее не реализовал пока. Наверное, на выходных еще отпишусь по этому поводу.
|
6# | Quanzo Поменял аватарку и посмотрим что получится... |
7# | Quanzo Поменял аватарку и посмотрим что получится... |
8# | Quanzo Похоже, Ваше решение сохранять адрес аватарки в момент записи коментария - наиболее подходящее. |
9# | Sander Quanzo
|
10# | Quanzo Sander
|
11# | Sander Ну, значит, Гугл хорошо себя ведет в этом смысле. Поигрался с добыванием данных другого пользователя
|
12# | Sander Здесь написано, как делать REST запрос с OAUTH, но у меня никак не получается (не проходит авторизация)
|
13# | Quanzo Насколько понял, запрос на получение данных пользователя www.google.com/friendconnect/api/people/<ID of the user to fetch>/@self?oauth_consumer_key=<your
|
14# | Sander Я нашел статью, где описывается, как формировать oauth_signature
|
15# | Qusko Всегда рад помочь, Ваша работа была проделана не зря :)
|
16# |
Привет!
|
17# | Sander Интересный вопрос. Думал, думал - никаких идей не рождается. Сейчас задам его на форуме разработчиков, потом отпишусь!
|
18# |
Спасибо за ответ. Подписался на комментарии. Может быть удастся что-то найти или придётся идти курить спецификацию OS :-) |
19# | Sander Для Alex
|
20# |
Я пишу api для ning.com. Использую opensocial 0.8. Но у меня есть одна проблема, которую никак не могу решить. Есть вот такой код.
|
21# |
благодарен за полезную статью |
22# |
На каком движке реализован ваш сайт?
|
23# | Sander schanker
|
24# |
Спасибо, Вы мне помогли,получил ответ на вопрос, ответ на который долго искал. |
25# | Sander Рад, что пригодилось! |
26# | Quanzo Google Friend Connect теперь и на русском языке. Надо в настройках сайта в панели управления GFC указать русский язык.
|
27# | Sander Quanzo, спасибо за совет, поменял язык! |
28# |
хорошая идея, только не понял зачем внизу про фотошоп писать:) |
29# |
Cпасибо за новую систему комментариев, но не совсем понятно.. |
30# |
Скажите, пожалуйста, у меня древовидная система комментирования, можно ли как-нибудь автоматически отправлять e-mail по ID пользователя, например, если на чей-то комментарий ответили, чтобы ему пришло уведомление? |
31# | Sander Александр, да все можно, главное - знать, как у вас реализована система комментирования. Я сам писал свой движок, поэтому знаю, где и что крутить.
|
32# |
Я про OpenSocial. В базе храню комментарии, а также Id, DisplayName и ThumbURL из данных GFC. Я так понимаю, что автоматом отправить e-mail присоединенному пользователю, зная его Id, не получится. Это как защита от спама? Хотя в анкете пользователя руками отправить ему e-mail можно. |
33# | Sander Александр, напрямую нельзя, но должен быть способ.
|
34# |
Вау! Спасибо то что мне нужно, мега респект!
|
35# |
Благодарю ибо расширили знания. |
36# |
Всегда считал такие штуки высшим пилотажем.. Вот так и происходит, кто то придумывает, разрабатывает в итоге развивается.. а остальная масса тупо пользуется и даже не задумывается.. тем самым происходит отупление))) |
37# |
Уважаемый автор. Вопрос про Гугл АПИ, можно ли тянуть по апи выдачу? (Для того, чтобы смотреть позиции и количество страниц найденных по запросу) Если вдруг это можно делать из php и получать туда же результат - отпишите пожалуйста в указанную почту, может куплю немного ваших знаний для личных нужд. |
38# | Sander Отписал в почту |
39# |
Очень интересные доводы, комментирование блогов на блоггере иногда бесит из-за никак не подгружающегося ява скрипта 8( |
40# |
PEPEL, да... Есть такою глюк в блоггере... Странно как его до сих пор не исправили... Видимо Гуглу не до блогов... |
41# |
за то что сам написал-уважение. И чем она от обычной отличается? |
42# | Sander Если коротко, то тем, что вывод комментариев генерится на стороне сервера (php). Обычная система - это java-script |
43# |
Реализация супер, я так понимаю можно отсеить много спама в комментах кто хочет ссылку проставить, но блин перечитал 2 раза невкурил, а зачем так замудренно, просто для оригинальности? хотел бы себе на блоге так сделать, поможете? |
44# | Sander Ну у вас вроде и так есть система комментариев.
|
45# |
Скажите, Sander. Помогает ли "Я - робот! (снимите галочку, если это не так)" у Вас в комментариях для борьбы с ботами. |
46# | Sander Отлично помогает, причем именно в этом направлении!
|
47# |
Интересное решение! |

