2. Работа с соцсетями
Почти у всех крупных соцсетей есть сладкая пара:
Авторизация через OAuth
Запросы через REST API или RPC-style API.
Дополнительно:
Может быть свой SDK, но зачастую (например — у
Facebook) это обёртка поверх того же API.
Может быть сторонний SDK (пример — Twitter4j).
2 Работа с соцсетями
3. OAuth
OAuth — протокол для авторизованного доступа к стороннему
API. OAuth позволяет приложению получить ограниченный
API-доступ к данным стороннего сервиса, если пользователь
дает добро.
Постановка проблемы:
Пользователи боятся вводить логины и пароли от своих
любимых фейсбуков/гмейлов внутри «левых»
страниц/приложений.
Если же они предоставляют доступ в рамках исходного
сервиса — доверие гораздо выше!
Можно ограничить права доступа и ограничения.
3 Работа с соцсетями
5. Общая схема работы OAuth
Отсылаем браузер на страницу аутентификации сервиса,
указывая URL для возврата.
Пользователь видит родную фейсбучную страничку и не
боясь вводит логин/пароль.
Если все ОК, у пользователя запрашивается разрешение
на выдачу прав доступа для приложения.
Если все ОК, браузер перенаправляет пользователя
обратно на URL нашего сервиса.
Обрабатываем редирект. В параметре редирект-запроса к
нам приходит «код доступа».
С кодом доступа и «секретом» отправляем запрос на
получение токена (ACCESS_TOKEN).
Отправляем прикладные запросы с токеном (например,
получить информацию о пользователе: https://graph.
facebook.com/me?access_token=ACCESS_TOKEN)
5 Работа с соцсетями
7. Общая схема работы OAuth
Открываем в стандартном браузере — а как отловить
редирект?
http://www.facebook.com/dialog/oauth?
client_id=APP_ID&redirect_uri=fbconnect:
//success
Притворимся, что умеем смотреть redirect_uri
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="fbconnect" android:host="success" />
</intent-filter>
7 Работа с соцсетями
9. REST
Пример использования:
GET /user/info — прочитать информацию
PUT /user/info — обновить информацию
GET /item/comments — получить комментарии
GET /item/comments/14 — получить 14-ый комментарий
POST /item/comments — добавить комментарий
DELETE /item/comments/14 — удалить 14-ый комментарий
DELETE /item/comments — очистить комментарии
9 Работа с соцсетями
10. RPC
Remote procedure calling
Если у нас появляется знак ? в URL, то это уже не REST
Очень похоже на простой вызов процедур:
Название функции — это просто соответствующий URL
Аргументы задаются через параметры GET/POST-запроса
https://api.vk.com/method/messages.send?
uid=66392446&message=Preved&title=Medved&
access_token=longenoughrandomcharsequence
10 Работа с соцсетями