Micropython ESP8266 Twilio 401 НЕ АВТОРИЗОВАН

Я запускаю MicroPython на ESP8266. Код должен отправить SMS-запрос HTTP POST в restAPI Twilio. Я пытался заставить его работать с urequests. но я продолжаю получать 401 НЕСАНКЦИОНИРОВАННЫЙ ответ. Пожалуйста, посоветуйте. Код:

import urequests

def send_sms():
    twilio_account_sid = "{AcctSID}"
    twilio_auth_token = "{AuthToken}"
    from_phn_nbr = "+{FromPhoneNbr}"
    to_phn_nbr = "+{ToPhoneNbr"))

    twilio_proto = "https://"
    twilio_host = "api.twilio.com"
    twilio_path = "/2010-04-01/Accounts/{AcctSID}/Messages"
    twilio_url = twilio_proto + twilio_host + twilio_path
    twilio_data = "'From': '{from_phn_nbr}', \
                  'To': '{to_phn_nbr}', \
                   'Body': 'Hai'"

    twilio_headers = {
        'Authorization': 'Basic {AcctSID}:{AuthToken}',
        'Content-Type': 'application/x-www-form-urlencoded',
        'WWW - Authenticate': 'Basic realm = "Twilio API'
    }

    try:
        resp = urequests.post(url=twilio_url, 
                                  data=twilio_data, 
                                  headers=twilio_headers)
        print(resp.status_code, resp.reason)

    except Exception as exc:
        print("\nException occured.")
        sys.print_exceptin(exc)

person andere    schedule 31.03.2017    source источник


Ответы (2)


Евангелист разработчиков Twilio здесь.

Я не знаком с библиотекой urequests, но при использовании базовой HTTP-аутентификации недостаточно просто объединить имя пользователя, двоеточие и пароль. Вам также необходимо закодировать эту объединенную строку.

Это все, что я могу придумать из вашей реализации. Дайте мне знать, если это поможет.

person philnash    schedule 03.04.2017
comment
Я реализовал это, и это работает. Спасибо за ваше предложение. Кстати: я использовал Postman для создания строки аутентификации в кодировке base 64. Кстати 2: urequests — это модуль Micropython для отправки HTTP-запросов. - person andere; 04.04.2017
comment
Фантастический! Рад, что теперь работает. Каким бы расплывчатым ни был мой ответ, не могли бы вы отметить его как правильный, чтобы другие могли видеть? - person philnash; 04.04.2017
comment
@andere Не могли бы вы опубликовать, как вы это исправили? У меня (я полагаю) та же проблема с urequests: см. stackoverflow .com/questions/46939183/ Спасибо. - person dentex; 27.10.2017

@дентекс

Использование почтальона:

  • Заполните вкладку Авторизация

введите здесь описание изображения

  • Перейти на вкладку Заголовки
  • Скопируйте значение «Авторизация»

введите здесь описание изображения

Прошлое значение «Авторизация» в ваш код следующим образом:

twilio_headers = {
'Authorization': 'Basic QUMxMmZhNzFlYzU5MzZkNzYyMDYzNWM2Njg1NzNlZWNkNDo2OTBiY2Q5OTA2MDc3NmIzYmQ0NzgwOGE5ZTc2NmM5Yg==',
'Content-Type': 'application/x-www-form-urlencoded',
'WWW-Authenticate': 'Basic realm = Twilio API'

}

person andere    schedule 03.11.2017