Автентифікація через OAuth 2.0 для API eSputnik
Використовуйте OAuth 2.0, коли вашому серверному застосунку потрібно отримати доступ до API eSputnik від імені користувача eSputnik — без збереження його облікових даних або статичного API-ключа.
OAuth 2.0 дозволяє користувачу надати вашому застосунку доступ до певних ресурсів API eSputnik. Застосунок отримує токени та використовує їх для звернень до API відповідно до обраних областей доступу.
Швидкий старт
- Зареєструйте OAuth-застосунок.
- Отримайте Client ID та Client Secret.
- Сформуйте URL авторизації та перенаправте користувача.
- Обміняйте код авторизації на токени.
- Звертайтеся до API з токеном доступу.
- Оновлюйте токени за потреби.
Як працює OAuth 2.0
OAuth 2.0 дозволяє стороннім застосункам отримувати доступ до API eSputnik від імені користувача — без передачі логіна чи пароля.
Приклад процесу:
- Користувач підключає ваш застосунок до свого акаунту eSputnik.
- eSputnik відображає форму авторизації.
- Користувач входить і надає доступ.
- eSputnik перенаправляє користувача назад до вашого застосунку з кодом авторизації.
- Ваш застосунок обмінює цей код на токен доступу та токен оновлення.
- Ваш застосунок використовує токен доступу для звернень до API eSputnik.
Зверніть увагу: реалізація підтримана лише для застосунків із серверною частиною, тобто
response_type=code.
Області доступу
Доступ до ресурсів API eSputnik визначається областями доступу, обраними під час реєстрації застосунку.
| Область доступу | Дозволяє застосунку |
|---|---|
| Full access to API | Використовувати всі доступні методи API |
| Access to events | Генерувати події |
| Access to events and contacts | Генерувати події, додавати та оновлювати контакти, отримувати активність контактів |
| Access to messages | Надсилати підготовлені повідомлення |
Обирайте лише ті області, які дійсно потрібні вашому застосунку. Область доступу обмежує те, що може робити токен доступу.
Зверніть увагу: якщо змінити область доступу після реєстрації, вже видані токени продовжать працювати зі старим набором прав. Щоб отримати токен з оновленими правами, користувач повинен пройти авторизацію повторно.
Реєстрація OAuth-застосунку
Перед початком інтеграції з OAuth 2.0 зареєструйте свій застосунок в eSputnik.
- Натисніть меню акаунту у верхньому правому куті та відкрийте Для партнерів.
- На сторінці Партнерські застосунки натисніть Зареєструвати застосунок.
-
Заповніть інформацію про застосунок:
- Назва
- Callback URL — адреса, на яку eSputnik перенаправить користувача після підтвердження або відхилення авторизації (можна залишити порожнім і додати пізніше)
- Області доступу — оберіть із таблиці вище
-
Натисніть Зареєструватися.
Після реєстрації eSputnik генерує Client ID та Client Secret для вашого застосунку. Збережіть їх у надійному місці — вони знадобляться для отримання токенів.
Налаштування форми авторизації
Ви можете налаштувати, як ваш застосунок відображається у формі авторизації eSputnik. Це допомагає користувачам впізнати ваш застосунок перед наданням доступу.
- Натисніть меню акаунту у верхньому правому куті та відкрийте Для партнерів.
- Знайдіть свій OAuth-застосунок на сторінці Партнерські застосунки.
- Натисніть Редагувати.
- Перейдіть на вкладку Форма авторизації.
- Оновіть дані форми:
- Назва застосунку — змініть за потреби
- Логотип — завантажте логотип застосунку
- Натисніть Зберегти.
Вимоги до логотипу:
- Підтримувані формати:
JPG,GIF,PNG - Максимальний розмір файлу:
1 МБ - Рекомендоване співвідношення сторін:
1:1 - Рекомендований розмір:
96 × 96 пікселів - Зображення більшого розміру будуть обрізані до 100% ширини та вирівняні по центру
Керування OAuth-застосунком
Після реєстрації застосунок з'являється на сторінці Партнерські застосунки.
Звідси ви можете:
- скопіювати Client ID та Client Secret
- редагувати налаштування застосунку
- налаштувати форму авторизації
- переглянути форму авторизації
- видалити застосунок
Увага: після видалення OAuth-застосунку всі пов'язані ключі, токени та інтеграції стають недійсними. Будь-яка інтеграція, що використовує цей застосунок, припинить працювати — її потрібно буде налаштувати заново з новим OAuth-застосунком.
Процес авторизації
Крок 1 — Формування URL авторизації
Перенаправте користувача на:
https://uaa.esputnik.com/uaa/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_CALLBACK_URL
Параметри:
| Параметр | Опис |
|---|---|
response_type=code | Запит сторінки авторизації з полями для входу |
client_id | Ваш Client ID, отриманий при реєстрації застосунку |
redirect_uri | Має точно збігатися з Callback URL, зареєстрованим для застосунку, включаючи протокол, домен, шлях та будь-який слеш у кінці |
Крок 2 — Авторизація користувача
Користувач входить в eSputnik та надає доступ вашому застосунку.
Після успішної авторизації eSputnik перенаправляє на Callback URL із кодом авторизації:
HTTP/1.1 302 Found
Location: https://yourapp.com/callback?code=YOUR_CODE
Збережіть значення code — воно знадобиться на наступному кроці.
Крок 3 — Отримання токенів
Надішліть POST-запит на https://uaa.esputnik.com/uaa/oauth/token.
Передайте такі параметри в тілі запиту:
| Параметр | Опис |
|---|---|
grant_type=authorization_code | Запит токена доступу за кодом авторизації |
code | Код авторизації, отриманий на кроці 2 |
redirect_uri | Має точно збігатися з Callback URL, використаним на кроці 1, включаючи протокол, домен, шлях та будь-який слеш у кінці |
client_id | Ваш Client ID, отриманий при реєстрації застосунку |
client_secret | Ваш Client Secret, отриманий при реєстрації застосунку |
Автентифікація запиту — Basic Auth: username це ваш Client ID, password це ваш Client Secret.
Відповідь:
{
"access_token": "YOUR_ACCESS_TOKEN",
"token_type": "bearer",
"refresh_token": "YOUR_REFRESH_TOKEN",
"scope": "UseRestApi",
"expires_in": 172800
}Термін дії токенів:
- Токен доступу: 48 годин
- Токен оновлення: 30 днів
Відлік починається з моменту видачі токена.
Крок 4 — Звернення до API eSputnik
Передавайте токен доступу в заголовку Authorization кожного запиту до API:
Authorization: Bearer YOUR_ACCESS_TOKEN
Доступні методи API залежать від області доступу, налаштованої під час реєстрації застосунку.
Крок 5 — Оновлення токена доступу
Коли токен доступу закінчується, використайте токен оновлення, щоб отримати нову пару токенів — без повторного входу користувача.
Надішліть POST-запит на https://uaa.esputnik.com/uaa/oauth/token.
Передайте такі параметри в тілі запиту:
| Параметр | Опис |
|---|---|
grant_type=refresh_token | Запит нового токена за допомогою токена оновлення |
refresh_token | Токен оновлення, отриманий на кроці 3 (або під час останнього кроку 5) |
client_id | Ваш Client ID, отриманий при реєстрації застосунку |
client_secret | Ваш Client Secret, отриманий при реєстрації застосунку |
Автентифікація запиту — Basic Auth: username це ваш Client ID, password це ваш Client Secret.
Відповідь:
{
"access_token": "NEW_ACCESS_TOKEN",
"token_type": "bearer",
"refresh_token": "NEW_REFRESH_TOKEN",
"expires_in": 172800
}Після успішного оновлення попередній токен доступу стає недійсним — використовувати можна лише новий. Для наступного оновлення використовуйте новий токен оновлення.
Приклад коду
Python
import requests, json
authorize_url = "https://uaa.esputnik.com/uaa/oauth/authorize"
token_url = "https://uaa.esputnik.com/uaa/oauth/token"
callback_uri = "http://my_host:8081/test/callback"
protected_api_contacts = "https://esputnik.com/api/v1/contacts"
client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT_SECRET'
authorization_redirect_url = authorize_url + '?response_type=code&client_id=' + client_id + '&redirect_uri=' + callback_uri
print("go to the following url on the browser and enter the code from the returned url: ")
print("--- " + authorization_redirect_url + " ---")
authorization_code = input('code: ')
data = {'grant_type': 'authorization_code', 'code': authorization_code, 'redirect_uri': callback_uri}
access_token_response = requests.post(token_url, data=data, allow_redirects=False, auth=(client_id, client_secret))
tokens = json.loads(access_token_response.text)
access_token = tokens['access_token']
print("access token: " + access_token)
api_call_headers = {'Authorization': 'Bearer ' + access_token}
api_call_response = requests.get(protected_api_contacts, headers=api_call_headers)
print(api_call_response.text)Підключені застосунки
Щоб переглянути застосунки, яким надано доступ до вашого акаунту, натисніть меню акаунту у верхньому правому куті, відкрийте Налаштування та перейдіть до Підключені застосунки.
Щоб відключити застосунок, натисніть три крапки поряд із ним та оберіть відповідний пункт.
Пов'язані статті
Updated 26 days ago