Dink0 commited on
Commit
cb75477
·
verified ·
1 Parent(s): f37ee60

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -7
app.py CHANGED
@@ -13,10 +13,9 @@ def generate_code_challenge(code_verifier):
13
  hashed = hashlib.sha256(code_verifier.encode('utf-8')).digest()
14
  return base64.urlsafe_b64encode(hashed).decode('utf-8').rstrip('=')
15
 
16
- # Инициализация session_state для хранения code_verifier и code_challenge
17
  if 'code_verifier' not in st.session_state:
18
  st.session_state.code_verifier = generate_code_verifier()
19
- st.session_state.code_challenge = generate_code_challenge(st.session_state.code_verifier)
20
 
21
  # Заголовок приложения
22
  st.title("VK ID Authorization with PKCE")
@@ -27,9 +26,12 @@ client_secret = "piaMXHEDj0afa4QObJCD" # Ваш client_secret
27
  redirect_uri = "https://huggingface.co/spaces/PRAnalytics/prtooltest" # Ваш redirect_uri
28
  scope = "wall" # Запрошенные разрешения
29
 
 
 
 
30
  # Отображение code_verifier и code_challenge (для отладки)
31
  st.write("code_verifier:", st.session_state.code_verifier)
32
- st.write("code_challenge:", st.session_state.code_challenge)
33
 
34
  # Шаг 1: Авторизация
35
  st.markdown("### 1) Авторизация")
@@ -38,8 +40,8 @@ auth_params = {
38
  "redirect_uri": redirect_uri,
39
  "response_type": "code",
40
  "scope": scope,
41
- "state": "my_state",
42
- "code_challenge": st.session_state.code_challenge, # Используем сохраненный code_challenge
43
  "code_challenge_method": "S256",
44
  "response_mode": "query"
45
  }
@@ -55,9 +57,13 @@ st.markdown("""
55
  st.markdown("### 2) Обмен кода на токены")
56
  user_code = st.text_input("Введите полный code, полученный из URL", value="")
57
  user_device_id = st.text_input("Введите полный device_id, полученный из URL", value="")
 
58
 
59
- if user_code:
60
  if st.button("Обменять code"):
 
 
 
61
  url = "https://id.vk.com/oauth2/auth" # Endpoint для обмена токенов
62
  data = {
63
  "grant_type": "authorization_code",
@@ -65,7 +71,7 @@ if user_code:
65
  "client_secret": client_secret,
66
  "redirect_uri": redirect_uri,
67
  "code": user_code,
68
- "code_verifier": st.session_state.code_verifier # Используем сохраненный code_verifier
69
  }
70
  if user_device_id:
71
  data["device_id"] = user_device_id
 
13
  hashed = hashlib.sha256(code_verifier.encode('utf-8')).digest()
14
  return base64.urlsafe_b64encode(hashed).decode('utf-8').rstrip('=')
15
 
16
+ # Инициализация session_state для хранения code_verifier
17
  if 'code_verifier' not in st.session_state:
18
  st.session_state.code_verifier = generate_code_verifier()
 
19
 
20
  # Заголовок приложения
21
  st.title("VK ID Authorization with PKCE")
 
26
  redirect_uri = "https://huggingface.co/spaces/PRAnalytics/prtooltest" # Ваш redirect_uri
27
  scope = "wall" # Запрошенные разрешения
28
 
29
+ # Генерация code_challenge на основе сохраненного code_verifier
30
+ code_challenge = generate_code_challenge(st.session_state.code_verifier)
31
+
32
  # Отображение code_verifier и code_challenge (для отладки)
33
  st.write("code_verifier:", st.session_state.code_verifier)
34
+ st.write("code_challenge:", code_challenge)
35
 
36
  # Шаг 1: Авторизация
37
  st.markdown("### 1) Авторизация")
 
40
  "redirect_uri": redirect_uri,
41
  "response_type": "code",
42
  "scope": scope,
43
+ "state": st.session_state.code_verifier, # Передаем code_verifier в параметре state
44
+ "code_challenge": code_challenge,
45
  "code_challenge_method": "S256",
46
  "response_mode": "query"
47
  }
 
57
  st.markdown("### 2) Обмен кода на токены")
58
  user_code = st.text_input("Введите полный code, полученный из URL", value="")
59
  user_device_id = st.text_input("Введите полный device_id, полученный из URL", value="")
60
+ user_state = st.text_input("Введите state, полученный из URL", value="") # Поле для ввода state
61
 
62
+ if user_code and user_state:
63
  if st.button("Обменять code"):
64
+ # Используем code_verifier из параметра state
65
+ code_verifier = user_state
66
+
67
  url = "https://id.vk.com/oauth2/auth" # Endpoint для обмена токенов
68
  data = {
69
  "grant_type": "authorization_code",
 
71
  "client_secret": client_secret,
72
  "redirect_uri": redirect_uri,
73
  "code": user_code,
74
+ "code_verifier": code_verifier # Используем code_verifier из state
75
  }
76
  if user_device_id:
77
  data["device_id"] = user_device_id