Python Ошибка InvalidHeader при попытке отправить http-запросы на Azure REST API - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь создать запрос http put для использования Azure REST API для создания группы ресурсов с использованием параметров, которые создаются с помощью формы HTML. При попытке отправить запрос я получаю сообщение об ошибке, что мой заголовок недействителен для заголовка авторизации.

Вот ошибка, которую я получаю

Exception has occurred: InvalidHeader
Value for header {Authorization: {'access_token': 'MYACCESSTOKEN', 'token_type': 'Bearer', 'expires_in': 583}} must be of type str or bytes, not <class 'dict'>

Вот мой код

@app.route('/storageaccountcreate', methods = ['POST', 'PUT'])
def storageaccountcreate():
    name = request.form['storageaccountname']
    resourcegroup = request.form['resourcegroup']
    subscriptionId = request.form['subscriptionId']
    location = request.form['location']
    sku = request.form['sku']
    headers = {"Authorization": _get_token_from_cache(app_config.SCOPE)}
    url = f'https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.Storage/storageAccounts/{name}?api-version=2019-06-01'
    r = requests.put(url, headers=headers)
    print(r.text)
    return(r.text)

1 Ответ

1 голос
/ 09 апреля 2020

Обычно значение вашего токена Authorization должно быть в следующем формате: Bearer <access-token-value> однако вы передаете результат вашего метода _get_token_from_cache и, следовательно, получаете эту ошибку.

Чтобы это исправить, возьмите значение access_token и token_type из результата этого метода и создайте токен Authorization, используя формат, который я указал выше. Что-то вроде:

token_information = _get_token_from_cache(app_config.SCOPE)
token_type = token_information['token_type']
access_token = token_information['access_token']
auth_header = token_type + " " + access_token
headers = {"Authorization": auth_header}
...