Как получить токен доступа в Python

Я хочу сделать вызов api для отдыха и получить токен доступа, и этот токен доступа будет там в течение 30 минут. Мне снова нужно обновить этот токен.

Я не понимаю, как получить токен доступа, пробовал множество фрагментов кода.

Образец токена доступа будет таким, как показано ниже: KkcwAIyUm6XGbGUA0wejna6_8kk3Zuo66BigYo3gAGI.

URL-адрес, используемый в посте для ручного получения токена доступа: [https://xxx.xxx.com/restapi/vc/authentication/sessions/login?user.login=s_user&user.password=xxx]

Затем мне нужно использовать этот токен доступа в URL-адресе ниже для получения данных: [https://xxx.xxx.com/restapi/vc/messages/id/879997?restapi.session_key=kEf-mTzu6Xnsa5HQKt8ml-9Wc-HX3wHLlphB2oQkrxE.&restapi.response_format=json]

Может ли кто-нибудь помочь с кодом Python для этого

Код, который я пытаюсь получить для токена доступа:

    import requests
import json

with requests.Session() as session:
    req = requests.get(r'https://xx.xx.com/restapi/vc/authentication/sessions/login?user.login=s_user&user.password=xxxx')

print(req.content)

Выход: b '\ n F0JQfxkxxwl-O9-cQKtJhdrNRKJg3ENLd_SckmBIqU0. \ n \ n'

Код, работающий для токена доступа жесткого кодирования от почтальона:

for m in data_list:
    response = requests.get("https://xxx.xx.com/restapi/vc/messages/id/"+m+"?restapi.session_key=kEf-mTzu6Xnsa5HQKt8ml-9Wc-HX3wHLlphB2oQkrxE.&restapi.response_format=json")
    data = response.json()
    cleaned_text=cleanhtml(data['response']['message']['body']['$'])
    body_list.append(cleaned_text)
    #print(cleaned_text)
    #print ('---------BODY ENDS HERE--------')
    tz_subject = data['response']['message']['subject']['$']

Когда я жестко кодирую токен доступа, который я получил от почтальона, я могу получить результаты, используя приведенный ниже код, но я не понимаю, как сгенерировать токен доступа в python, а затем использовать его, обновить его, когда у меня истечет срок действия

Спасибо вам

Покажите код, который у вас есть

Michael Butscher 08.09.2018 02:03

Не помещайте его в комментарии, а отредактируйте свой вопрос и отформатируйте его как код

Michael Butscher 08.09.2018 02:07

@MichaelButscher, я добавил код, о котором идет речь, спасибо

timma 08.09.2018 02:17

Данные токена, вероятно, находятся в переменной req первого фрагмента (который на самом деле является ответом). Я не вижу необходимости в запросе POST, GET должен подойти. Обычно данные представлены в формате JSON, который можно декодировать аналогично второму фрагменту. Подробную информацию о том, как токен сохраняется в JSON, должен предоставить поставщик REST API.

Michael Butscher 08.09.2018 02:28

@MichaelButscher - вы правы, спасибо, что он работает сейчас, я отредактировал первый фрагмент с рабочим кодом, чтобы получить токен доступа, срок его действия истекает каждые 30 минут, как я могу регенерировать и использовать его через код

timma 08.09.2018 02:37

Точный способ его восстановления должен быть задокументирован поставщиком API.

Michael Butscher 08.09.2018 02:39

К сожалению, такого документа нет - мне нужно найти способ продолжать проверять, истек ли он, затем обновить токен и использовать его так

timma 08.09.2018 02:42

REST недостаточно стандартизирован, чтобы знать об этом без дополнительных документов. Я предполагаю, что вызов входа в систему из первого фрагмента необходимо повторить, чтобы получить новый токен.

Michael Butscher 08.09.2018 02:45

@MichaelButscher, хорошо, спасибо за помощь, последний вопрос: res=req.json() не работает x=req.text работает, но дает такой вывод - как извлечь токен доступа оттуда <response status = "success"> <value type = "string">jqUb-QG7n3lZp494Gm8lRH9-9iz0xm2WxR_XHXQ4LFE.</‌​value> </response>

timma 08.09.2018 02:59

Это XML, используйте синтаксический анализатор XML, например xml.etree.ElementTree из стандартной библиотеки

Michael Butscher 08.09.2018 03:57

@MichaelButscher, хорошо, попробую, спасибо

timma 08.09.2018 04:10

@MichaelButscher, как я могу поставить галочку напротив вашего комментария в качестве ответа?

timma 08.09.2018 04:12

Я написал ответ. Комментарии не могут быть приняты как ответы. Спасибо.

Michael Butscher 08.09.2018 04:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
13
2 045
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Данные токена, вероятно, находятся в переменной req первого фрагмента (который на самом деле является ответом).

Обычно данные ответа находятся в формате JSON, который можно декодировать аналогично второму фрагменту. В случае формата XML доступно несколько парсеров, например xml.etree.ElementTree из стандартной библиотеки Python.

Подробные сведения о том, как токен сохраняется в данных и как повторно сгенерировать токен, должен предоставить поставщик REST API.

Другие вопросы по теме