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# |
Александр, напрямую нельзя, но должен быть способ.
|
34# |
Вау! Спасибо то что мне нужно, мега респект!
|
35# |
Благодарю ибо расширили знания. |
36# |
Всегда считал такие штуки высшим пилотажем.. Вот так и происходит, кто то придумывает, разрабатывает в итоге развивается.. а остальная масса тупо пользуется и даже не задумывается.. тем самым происходит отупление))) |
37# |
Уважаемый автор. Вопрос про Гугл АПИ, можно ли тянуть по апи выдачу? (Для того, чтобы смотреть позиции и количество страниц найденных по запросу) Если вдруг это можно делать из php и получать туда же результат - отпишите пожалуйста в указанную почту, может куплю немного ваших знаний для личных нужд. |
38# |
Отписал в почту |