Я изо всех сил пытаюсь получить авторизацию OAuth2 для работы над сценарием, над которым я работаю, когда запускаю его на экземпляре сервера EC2 Linux (работает Ubuntu 13.04). Соответствующий фрагмент кода является:Почему аутентификация OAuth2 работает на домашней машине, но не на сервере?
with open('creds.txt') as f:
creds = {}
for line in f:
creds[line.split(',')[0]] = line.split(',')[1].rstrip('\n')
self.client_id = creds['client_id']
self.client_secret = creds['client_secret']
self.username = creds['username']
self.password = creds['password'])
token_response = requests.post(
"https://example.com/oauth2/access_token/",
data={
"grant_type": "password",
"client_id": self.client_id,
"client_secret": self.client_secret,
"username": self.username,
"password": self.password,
"scope": "read+write"}).json()
Он прекрасно работает на моем домашнем компьютере (под управлением ОС Windows 7), только не тогда, когда я пытаюсь запустить его удаленно, где я получаю: {u'error': u'invalid_client'}
.
Я пробовал настроить новый идентификатор клиента и секрет и все равно получить тот же ответ.
- Почему он работает по-другому на удаленном сервере на моей собственной машине?
-
Имеет ли значение, на какой машине было создано приложение (см. Комментарий)?- Я исключил эту возможность, успешно выполнив аутентификацию с использованиемCURL
в обеих средах.
Единственное, о чем я могу думать сейчас, это то, что, возможно, библиотека запросов обрабатывает запрос POST по-разному на Ubuntu. Кто-нибудь знает, если это так?
[Этот ответ] (http://stackoverflow.com/a/11267728/1706564) кажется, что он может быть уместным, так как предполагает, что идентификатор клиента заботится о том, на какой ОС он был сгенерирован. Я не могу найти ничего, чтобы подтвердить это в [docs] (http://tools.ietf.org/html/rfc6749). –