Быстрый старт с QuickBlox

Posted on by Nate Macleitch

Привет всем! Сегодня я хочу рассказать, о том, как быстро начать работу с QuickBlox.

QuickBlox предоставляет для работы простой и понятный, но в то же время достаточно мощный для решения широкого спектра задач REST API.

Для работы пригодится документация

Будем работать с сервером 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

http://bit.ly/w0vsby

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&timestamp=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

http://hurl.quickblo…0fc8700681412de