Каков правильный способ передачи API-ключа для избежания ошибки UNAUTHORIZED при работе с Yandex SpeechKit API?

Как обработать ошибку «UNAUTHORIZED» при использовании Yandex SpeechKit API в Flask?
  • 11 августа 2024 г. 13:23
Ответы на вопрос 2
Для передачи API-ключа безопасным способом рекомендуется использовать переменные среды или файл конфигурации. Например, вы можете создать файл .env, в котором сохраните ваш API-ключ, а затем использовать библиотеку python-dotenv для загрузки этого файла в ваш скрипт Flask.

Чтобы обработать ошибку "UNAUTHORIZED" при использовании Yandex SpeechKit API в Flask, вы можете использовать конструкцию try-except в вашем коде. Например:

```python
import requests
from flask import Flask, jsonify

app = Flask(__name__)

API_KEY = 'ваш_api_ключ'

@app.route('/speechkit/api', methods=['GET'])
def speech_to_text():
    try:
        response = requests.get('https://iam.api.cloud.yandex.net/iam/v1/tokens', headers={'Authorization': f'Api-Key {API_KEY}'})
        # Далее вставьте ваш код для обработки результатов запроса
        return jsonify(response.json())
    except requests.exceptions.RequestException as e:
        return jsonify({'error': 'UNAUTHORIZED', 'message': str(e)}), 401

if __name__ == "__main__":
    app.run()
```

Если при выполнении запроса к Yandex SpeechKit API возникает ошибка "UNAUTHORIZED", будет возвращен JSON-объект с информацией об ошибке и статусом 401.
Что-то странно ваш код выглядит, 
в документации есть пример:
export FOLDER_ID=<folder_ID>
export IAM_TOKEN=<IAM_token>
curl -X POST \
   -H "Authorization: Bearer ${IAM_TOKEN}" \
   --data-binary "@speech.ogg" \
   "https://stt.api.cloud.yandex.net/speech/v1/stt:recognize?folderId=${FOLDER_ID}&lang=ru-RU"
Похожие вопросы