У меня есть полностью основанное на сценариях приложение Slack для Python, которое я хочу запустить, но для него нужен токен пользователя (а не бота). Я могу нормально использовать устаревшие токены, но хочу получить токен через oauth. У меня много проблем с выяснением, как это сделать! Я добавил локальное перенаправление в приложение и попробовал этот код:
def _get_credentials(self):
credential_dir = os.path.join(PATH, '.credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
CREDENTIALS_LOCATION)
store = oauth2client.file.Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
clientSecretPath = os.path.join(PATH, CLIENT_SECRET_FILE)
flow = client.flow_from_clientsecrets(clientSecretPath, SCOPES)
flow.user_agent = APPLICATION_NAME
#### START PROBLEM ###
credentials = tools.run_flow(flow, store)
#### BREAKS ####
print('Storing credentials to ' + credential_path)
return credentials
Все проблемы, с которыми я сталкиваюсь, находятся в строке, обозначенной хеш-тегами.
Во-первых, если файл учетных данных не существует, вместо создания он ломается.
Если я создаю пустой файл с нужным именем, веб-браузер открывается и запрашивает у пользователя аутентификацию. Если они это сделают, они переходят на страницу с надписью «процесс аутентификации завершен». Однако в терминале отображается Authentication has failed: Invalid response: 302
, и в файл учетных данных ничего не сохраняется.
В любом случае он никогда не попадает в строку после #### BREAKS ####
Что я делаю не так, или еще лучше, как я могу сделать это правильно?