Я хочу сделать вызов 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, а затем использовать его, обновить его, когда у меня истечет срок действия
Спасибо вам
Не помещайте его в комментарии, а отредактируйте свой вопрос и отформатируйте его как код
@MichaelButscher, я добавил код, о котором идет речь, спасибо
Данные токена, вероятно, находятся в переменной req первого фрагмента (который на самом деле является ответом). Я не вижу необходимости в запросе POST, GET должен подойти. Обычно данные представлены в формате JSON, который можно декодировать аналогично второму фрагменту. Подробную информацию о том, как токен сохраняется в JSON, должен предоставить поставщик REST API.
@MichaelButscher - вы правы, спасибо, что он работает сейчас, я отредактировал первый фрагмент с рабочим кодом, чтобы получить токен доступа, срок его действия истекает каждые 30 минут, как я могу регенерировать и использовать его через код
Точный способ его восстановления должен быть задокументирован поставщиком API.
К сожалению, такого документа нет - мне нужно найти способ продолжать проверять, истек ли он, затем обновить токен и использовать его так
REST недостаточно стандартизирован, чтобы знать об этом без дополнительных документов. Я предполагаю, что вызов входа в систему из первого фрагмента необходимо повторить, чтобы получить новый токен.
@MichaelButscher, хорошо, спасибо за помощь, последний вопрос: res=req.json() не работает x=req.text работает, но дает такой вывод - как извлечь токен доступа оттуда <response status = "success"> <value type = "string">jqUb-QG7n3lZp494Gm8lRH9-9iz0xm2WxR_XHXQ4LFE.</value> </response>
Это XML, используйте синтаксический анализатор XML, например xml.etree.ElementTree из стандартной библиотеки
@MichaelButscher, хорошо, попробую, спасибо
@MichaelButscher, как я могу поставить галочку напротив вашего комментария в качестве ответа?
Я написал ответ. Комментарии не могут быть приняты как ответы. Спасибо.






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