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.
Рекомендую: чтобы работать с фотошопом не нужно быть профессионалом. Убираем красные глаза на фотографии за одну минуту!
757574166
Дата: 12 мая 2009 г., категория: для вебмастеров.
Что-то непонятно или не получается?
Оставьте свои пожелания или вопрос в виде комментария к статье. Информация о новых комментариях сразу приходит ко мне на почту, и я постараюсь ответить на ваш вопрос как можно скорее!
Есть вопрос по схожей теме?
Попробуйте поискать по сайту (форма поиска находится наверху страницы). Кроме того, можно задать мне вопрос через форму обратной связи.
Нужна компьютерная помощь?
Напишите мне о своей проблеме через форму обратной связи, я постараюсь помочь. Если же проблему невозможно решить удаленно, вы можете обратиться к специалистам, чей баннер расположен наверху.
| ← Анонимный серфинг | Сетевые устройства → |
Комментарии
1# |
Интересная задумка и хорошая реализация. Однозначно, время зря не потрачено. Шероховатости со временем сгладятся, а польза и удовлетворение от проделанной работы, останутся.
|
2# |
Спасибо за статью. Интересует вопрос - как получить данные произвольного пользователя по его номеру? |
3# |
Quanzo.
|
4# |
Предполагается следующее: при выводе сообщений в форуме надо печатать имя пользователя и его аватар, а эти данные получить от гугла (с кэшированием только на время вывода страницы). Принадлежность конкретного сообщения предполагается определять по номеру пользователя ($response->entry->id).
|
5# |
Я подумаю над вопросом добывания данных по ID. Должно быть возможно, но там может потребоваться страшная вещь под названием OAUTH - когда GFC сервер принимает не информацию о куке пользователя, а авторизацию сервер-сервер. Я ее не реализовал пока. Наверное, на выходных еще отпишусь по этому поводу.
|
6# |
Поменял аватарку и посмотрим что получится... |
7# |
Поменял аватарку и посмотрим что получится... |
8# |
Похоже, Ваше решение сохранять адрес аватарки в момент записи коментария - наиболее подходящее. |
9# |
Quanzo
|
10# |
Sander
|
11# |
Ну, значит, Гугл хорошо себя ведет в этом смысле. Поигрался с добыванием данных другого пользователя
|
12# |
Здесь написано, как делать REST запрос с OAUTH, но у меня никак не получается (не проходит авторизация)
|
13# |
Насколько понял, запрос на получение данных пользователя www.google.com/friendconnect/api/people/<ID of the user to fetch>/@self?oauth_consumer_key=<your
|
14# |
Я нашел статью, где описывается, как формировать oauth_signature
|
15# |
Всегда рад помочь, Ваша работа была проделана не зря :)
|
16# |
Привет!
|
17# |
Интересный вопрос. Думал, думал - никаких идей не рождается. Сейчас задам его на форуме разработчиков, потом отпишусь!
|
18# |
Спасибо за ответ. Подписался на комментарии. Может быть удастся что-то найти или придётся идти курить спецификацию OS :-) |
19# |
Для Alex
|
20# |
Я пишу api для ning.com. Использую opensocial 0.8. Но у меня есть одна проблема, которую никак не могу решить. Есть вот такой код.
|
21# |
благодарен за полезную статью |
22# |
На каком движке реализован ваш сайт?
|
23# |
schanker
|
24# |
Спасибо, Вы мне помогли,получил ответ на вопрос, ответ на который долго искал. |
25# |
Рад, что пригодилось! |
26# |
Google Friend Connect теперь и на русском языке. Надо в настройках сайта в панели управления GFC указать русский язык.
|
27# |
Quanzo, спасибо за совет, поменял язык! |
28# |
хорошая идея, только не понял зачем внизу про фотошоп писать:) |
29# |
Cпасибо за новую систему комментариев, но не совсем понятно.. |
30# |
Скажите, пожалуйста, у меня древовидная система комментирования, можно ли как-нибудь автоматически отправлять e-mail по ID пользователя, например, если на чей-то комментарий ответили, чтобы ему пришло уведомление? |
31# |
Александр, да все можно, главное - знать, как у вас реализована система комментирования. Я сам писал свой движок, поэтому знаю, где и что крутить.
|
32# |
Я про OpenSocial. В базе храню комментарии, а также Id, DisplayName и ThumbURL из данных GFC. Я так понимаю, что автоматом отправить e-mail присоединенному пользователю, зная его Id, не получится. Это как защита от спама? Хотя в анкете пользователя руками отправить ему e-mail можно. |
33# |
Александр, напрямую нельзя, но должен быть способ.
|
Нужна компьютерная помощь?
Задайте свой вопроc
на нашем новом проекте!
Нужна компьютерная помощь?
Задайте свой вопроc
на нашем новом проекте!
