Python: кодирование Base64 в Basic для подключения к API - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь подключиться к API, и мне нужно кодировать64 имя пользователя и пароль.Значение «Авторизация» должно выглядеть следующим образом: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ

Когда я пытаюсь подключиться, я получаю сообщение об ошибке: «Unauthorized: Bad credentials».Служба поддержки говорит, что мои учетные данные в порядке, но они медленно отвечают, чтобы решить мою проблему.

Я подозреваю кодирующую часть кода, но я не уверен.Не могли бы вы взглянуть на мой код и сказать, что с ним может быть не так?

Прямая ссылка на раздел об аутентификации в документации: http://developer.outbrain.com/home-page/amplify-api/documentation/#/reference/authentications/via-api

m = str(base64.b64encode(b'xxxxx:xxxxxxx'))
headers = {
    'Authorization': 'Basic ' + m + ''
}
r = requests.get('https://api.outbrain.com/amplify/v0.1/login', headers=headers)
print(r.json())

1 Ответ

0 голосов
/ 05 декабря 2018

Вам нужно использовать decode, чтобы правильно получить строку из последовательности байтов:

Неверно (обратите внимание на префикс 'b' и одинарные кавычки в результате):

>>> str(base64.b64encode(b'test'))
"b'dGVzdA=='"

Справа:

>>> base64.b64encode(b'test').decode('utf-8')
'dGVzdA=='

Кроме того, requests может сделать это за вас:

from requests.auth import HTTPBasicAuth
r = requests.get('https://api.outbrain.com/amplify/v0.1/login', auth=HTTPBasicAuth('user', 'pass'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...