Dink0 commited on
Commit
bbacb38
·
verified ·
1 Parent(s): 94ad1bf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -38
app.py CHANGED
@@ -74,59 +74,56 @@ def vk_auth():
74
 
75
  # Если параметры есть, выполняем обмен кода на токены
76
  if user_code and user_state:
77
- with st.expander("Посмотреть извлечённые параметры"):
 
 
 
 
 
78
  st.write("Автоматически извлечены параметры из URL:")
79
  st.write(f"code: {user_code}")
80
  st.write(f"device_id: {user_device_id}")
81
  st.write(f"state: {user_state}")
82
 
83
- # Используем code_verifier из параметра state
84
- code_verifier = user_state
85
-
86
- url = "https://id.vk.com/oauth2/auth"
87
- data = {
88
- "grant_type": "authorization_code",
89
- "client_id": VK_CLIENT_ID,
90
- "client_secret": VK_CLIENT_SECRET,
91
- "redirect_uri": REDIRECT_URI,
92
- "code": user_code,
93
- "code_verifier": code_verifier
94
- }
95
- if user_device_id:
96
- data["device_id"] = user_device_id
97
 
98
- # Спойлер для логов запроса
99
- with st.expander("Посмотреть логи запроса"):
100
  st.write("Отправляем запрос на:", url)
101
  st.write("Параметры запроса:", data)
102
 
103
- # Отправка запроса на обмен кода на токены
104
- resp = requests.post(url, data=data)
105
- with st.expander("Посмотреть ответ"):
106
  st.write("Status code:", resp.status_code)
107
  st.write("Response text:", resp.text)
108
 
109
- try:
110
- tokens = resp.json()
111
- with st.expander("Посмотреть JSON-ответ"):
112
  st.write("Ответ (JSON):")
113
  st.json(tokens)
114
 
115
- # Сохраняем токены и device_id в session_state
116
- st.session_state["VK_ACCESS_TOKEN"] = tokens["access_token"]
117
- st.session_state["VK_REFRESH_TOKEN"] = tokens["refresh_token"]
118
- st.session_state["VK_DEVICE_ID"] = user_device_id
119
- st.success("Токены успешно получены и сохранены!")
120
-
121
- # Устанавливаем флаг, что авторизация прошла успешно
122
- st.session_state["auth_success"] = True
123
-
124
- # Показываем кнопку для перехода к парсеру
125
- if st.button("Перейти к парсеру"):
126
- st.session_state["show_parser"] = True
127
- except Exception as e:
128
- st.error(f"Ошибка при декодировании ответа: {e}")
129
- st.text(resp.text)
130
  else:
131
  st.warning("Параметры code, device_id и state не найдены в URL. Пройдите авторизацию.")
132
 
 
74
 
75
  # Если параметры есть, выполняем обмен кода на токены
76
  if user_code and user_state:
77
+ # Показываем кнопку для перехода к парсеру
78
+ if st.button("Перейти к парсеру"):
79
+ st.session_state["show_parser"] = True
80
+
81
+ # Объединяем все технические спойлеры в один
82
+ with st.expander("Технические подробности"):
83
  st.write("Автоматически извлечены параметры из URL:")
84
  st.write(f"code: {user_code}")
85
  st.write(f"device_id: {user_device_id}")
86
  st.write(f"state: {user_state}")
87
 
88
+ # Используем code_verifier из параметра state
89
+ code_verifier = user_state
90
+
91
+ url = "https://id.vk.com/oauth2/auth"
92
+ data = {
93
+ "grant_type": "authorization_code",
94
+ "client_id": VK_CLIENT_ID,
95
+ "client_secret": VK_CLIENT_SECRET,
96
+ "redirect_uri": REDIRECT_URI,
97
+ "code": user_code,
98
+ "code_verifier": code_verifier
99
+ }
100
+ if user_device_id:
101
+ data["device_id"] = user_device_id
102
 
 
 
103
  st.write("Отправляем запрос на:", url)
104
  st.write("Параметры запроса:", data)
105
 
106
+ # Отправка запроса на обмен кода на токены
107
+ resp = requests.post(url, data=data)
 
108
  st.write("Status code:", resp.status_code)
109
  st.write("Response text:", resp.text)
110
 
111
+ try:
112
+ tokens = resp.json()
 
113
  st.write("Ответ (JSON):")
114
  st.json(tokens)
115
 
116
+ # Сохраняем токены и device_id в session_state
117
+ st.session_state["VK_ACCESS_TOKEN"] = tokens["access_token"]
118
+ st.session_state["VK_REFRESH_TOKEN"] = tokens["refresh_token"]
119
+ st.session_state["VK_DEVICE_ID"] = user_device_id
120
+ st.success("Токены успешно получены и сохранены!")
121
+
122
+ # Устанавливаем флаг, что авторизация прошла успешно
123
+ st.session_state["auth_success"] = True
124
+ except Exception as e:
125
+ st.error(f"Ошибка при декодировании ответа: {e}")
126
+ st.text(resp.text)
 
 
 
 
127
  else:
128
  st.warning("Параметры code, device_id и state не найдены в URL. Пройдите авторизацию.")
129