Быстрый старт с QuickBlox
Привет всем! Сегодня я хочу рассказать, о том, как быстро начать работу с QuickBlox.
QuickBlox предоставляет для работы простой и понятный, но в то же время достаточно мощный для решения широкого спектра задач REST API.
Для работы пригодится документация
- http://wiki.quickblox.com/Overview
- http://wiki.quickblox.com/Authentication_and_Authorization
- http://wiki.quickblox.com/Category:Modules
Будем работать с сервером https://{service}.quickblox.com
Вместо {service_name} необходимо подставить название нужного сервиса, например,
https://location.quickblox.com https://users.quickblox.com
Админ-панель https://admin.quickblox.com/
Тестовые доступы:
login: injoittest
password: injoittest
(не удаляйте, пожалуйста, приложение testapi)
1. Создание приложения через админ-панель
Логинимся, создаем приложение, идем в свойства приложения https://admin.quickb…x#/apps/98/edit
2. Авторизация приложения
Рассмотрим работу на примере приложения, данные которого приведены ниже
Auth_key: '8h49Tag9EpDNFX6' Auth_secret: 'nBqyUJhRbvUJLcV' Application_id: '98' Account_owner_id: '4342'
Для начала работы, авторизуем приложение, для этого создадим следующий POST-запрос
http://hurl.quickblo…1bc336501a884ec
Для ручного дебага может также пригодится онлайн-утилита для определения timestamp.
В запросе авторизации приложения используется хитрый параметр signature, который вычиляется следующим образом:
1. берем параметры своего запроса, сортируем их по алфавиту, записываем в одну строку
app_id=98&auth_key=8h49Tag9EpDNFX6&nonce=0×tamp=1325016104
2. затем шифруем с помощью HMAC-SHA с помощью функций вашего языка программирования или с помощью онлайн-утилиты, например http://hash.online-c.../sha1-generator
3. в качестве секретного ключа используем “Auth secret” из настроек приложения (у нас это nBqyUJhRbvUJLcV)
в онлайн-конверторе это выглядит вот так — http://www.online-co…7aad2c765cc1e8f
в качестве результата шифрования мы получаем подпись
77da735af4c16e358d3e713b1e5da16cc2dfdca6
которую используем в качестве значения параметра signature
В случае успешного выполнения запроса, получаем сессию
<?xml version='1.0' encoding='UTF-8'?>
<session>
<app-id type='integer'>
98
</app-id>
<created-at type='datetime'>
2011-12-27T20:01:54Z
</created-at>
<device-id type='integer' nil='true'/>
<id type='integer'>
72
</id>
<nonce type='integer'>
0
</nonce>
<token>
5d52ca61b1344f7097d7e72981f69a19e42bb491
</token>
<ts type='integer'>
1325016104
</ts>
<updated-at type='datetime'>
2011-12-27T20:01:54Z
</updated-at>
<user-id type='integer' nil='true'/>
</session>
отсюда в последующих запросах к api мы используем token
5d52ca61b1344f7097d7e72981f69a19e42bb491
который добавляем в каждый запрос
...&token=5d52ca61b1344f7097d7e72981f69a19e42bb491
Для быстрого получения signature удобно использовать специальную функцию, встроенную в http://hurl.quickblox.com/.
Для этого достаточно просто указать auth_secret вашего приложения в диалоге, вызываемом с помощью кнопки “(!) get signature”
после чего скрипт автоматически сгенерирует nonce, timestamp и signature
3. Добавление пользователя
Теперь добавим в наше приложение нового юзера
http://hurl.quickblo…15bb34e72a369b5
4. Аутентификация пользователя
Для того чтобы приложение имело право создавать/редактировать ресурсы, оно должно взаимодествовать с API от лица пользователя.
http://hurl.quickblo…a0c8e5808a6328a
5. Получить список всех пользователей приложения
http://hurl.quickblo…1a5d77f7b841621
6. Добавить локацию для пользователя
http://hurl.quickblo…b4a119458098aa3
Как вы заметили, в запросе добавления локации нету указания идентификатора пользователя, которому принадлежит локация, т.к. информацию о нем содержит токен, поэтому перед добавлением локации необходимо аутентифицировать пользователя (см. п.4).
7. Получить список всех локаций
http://hurl.quickblo…d2cda735e9cbfa2
Ключ last_only=1
Часто могут быть ситуации, когда для одного пользователя добавлено много локаций, тогда это выглядит следующим образом — http://bit.ly/tkWFYu
но нам необходимо получить только последние добавленные локации. В таком случае удобно использовать ключ last_only=1
http://hurl.quickblo…d1fd78c3b99dc2f
тогда сервис вернет ответ, в котором каждому пользователю соответствует только одна локация — http://bit.ly/tHSNd7
7.1 Получить локацию только для указанного юзера
http://hurl.quickblo…6830db9bc5c737b
8. Получить пользователя по id
http://hurl.quickblo…6d140f48b0e4865
9. Работа с external_user_id и facebook_id
Добавление пользователя
http://hurl.quickblo…fa83c12d5fd065d
Аутентификация
http://hurl.quickblo…bbfb95a3ed8ecc4
Получение по external_user_id
http://hurl.quickblo…2233db702b04d86
Получение по facebook_id
