Перейти к основному содержимому

Как получить API-токены с помощью Python

Для взаимодействия с Indigo API вы должны включать действительный токен аутентификации в ваши запросы. Это руководство объясняет, как получить этот токен.

Срок действия и обновление токена

Стандартный API токен истекает через 30 минут после выпуска.

У вас есть несколько вариантов управления сроком действия токена:

  • Токен обновления: Используйте конечную точку User Refresh Token для получения нового токена.
  • Токен автоматизации: В качестве альтернативы, вы можете использовать токен автоматизации и самостоятельно указать требуемый период действия.

Предварительные требования

Перед запуском примера скрипта убедитесь, что вы выполнили следующие шаги:

  1. Установите библиотеку Python: Установите библиотеку requests, если вы еще этого не сделали. Обычно это можно сделать с помощью pip:

    pip install requests
  2. Настройте учетные данные: В приведенном ниже скрипте Python вам потребуется ввести данные вашей учетной записи Indigo в переменные USERNAME и PASSWORD.

    • USERNAME: Адрес электронной почты вашей учетной записи Indigo.
    • PASSWORD: Пароль вашей учетной записи Indigo. (MD5 шифрование обрабатывается скриптом, поэтому вводите ваш обычный пароль).

Пример скрипта на Python

Следующий скрипт на Python демонстрирует, как войти в систему и получить API токен.

import json
import requests
import hashlib

# Определяем конечные точки API и заголовки
INDIGO_BASE = "api.indigobrowser.com"
INDIGO_LAUNCHER = "[https://launcher.indigobrowser.com:45011/api/v2](https://launcher.indigobrowser.com:45011/api/v2)"
LOCAL_HOST = "[http://127.0.0.1](http://127.0.0.1)"
HEADERS = {
'Accept': 'application/json',
}

# TODO: Вставьте данные вашей учетной записи в обе переменные ниже.
USERNAME = "" # Замените на ваш email в Indigo
PASSWORD = "" # Замените на ваш пароль в Indigo

def sign_in():
"""
Выполняет вход в Indigo API и получает токен аутентификации.
"""
# Подготавливаем полезную нагрузку с email и MD5 хэшем пароля
payload = {
'email': USERNAME,
'password': hashlib.md5(PASSWORD.encode()).hexdigest()
}

try:
# Отправляем POST-запрос на конечную точку входа
r = requests.post(f'{INDIGO_BASE}/user/signin', json=payload, headers=HEADERS)
r.raise_for_status() # Вызывает HTTPError для плохих ответов (4XX или 5XX)

# Разбираем JSON-ответ
response_data = r.json() # Изменено с json.loads(r.text) для лучшей практики с requests

# Извлекаем токен из ответа
token = response_data.get('data', {}).get('token')

if token:
print(f"Токен успешно получен: {token}")
return token
else:
print("\nНе удалось получить токен: поле 'token' не найдено в данных ответа.")
print(f"Ответ: {response_data}\n")
return None

except requests.exceptions.HTTPError as http_err:
print(f'\nПроизошла ошибка HTTP: {http_err}')
print(f'Содержимое ответа: {r.text}\n')
return None
except requests.exceptions.RequestException as req_err:
print(f'\nПроизошла ошибка запроса: {req_err}\n')
return None
except json.JSONDecodeError:
print(f'\nНе удалось декодировать JSON-ответ: {r.text}\n')
return None

# Вызываем функцию sign_in для ее выполнения и получения токена
if __name__ == "__main__":
api_token = sign_in()
if api_token:
# Теперь вы можете использовать этот токен для последующих запросов к API
print("Токен можно использовать для дальнейших запросов к API.")
else:
print("Не удалось получить API токен.")