• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z funkcja validującą recaptcha od googla i obsłużeniem JSON'a w FLASK APP

42 Warsaw Coding Academy
0 głosów
370 wizyt
pytanie zadane 12 października 2016 w Python przez Atomowy Nowicjusz (120 p.)

Pytanie odnośnie recaptcha / flask ( chciałem napisać własną funkcje validującą) 

Mam problem ze znalezieniem błędu w skrypcie jaki napisałem, całość działa tak że użytkownik uzupełnia formularz na stronie internetowej i przechodzi proces sprawdzenia rechaptcha. 

<form name="add_run" method="POST" >
                <input type="text" name="run_name" placeholder="Nazwa biegu"/><br/>
                [...]
                <input type="text" name="description" placeholder="Opis biegu"><br/><br>
                <div class="g-recaptcha" data-sitekey="SITE_KEY"></div>
                <button type="submit"> Dodaj bieg </button>

Dane z formularza są POSTowane do aplikacji (flask/python). 

@app.route('/add_run', methods=['GET', 'POST'])
[...]

    if request.method == "POST":
        # miejsce na mapowanie wartości
        run_name = request.form['run_name']
     [...]
        description = request.form['description']
        grecaptcharesponse = request.form['g-recaptcha-response']
        if verify_grecaptcha(grecaptcharesponse) == True: #coś się tutaj psuje - IF 

          # WPISANIE DANYCH DO BAZY DANYCH i przekierowanie na strone udalo sie
        else:
            # Przekierowanie na strone nie udało sie
    else: # obsłużenie Get'a [..]

    
Problem pojawia się w funkcji verify_grecaptcha która nie zwraca mi true w momencie kiedy dostanie od googla JSON'a który wygląda np tak :

 

jsonobj = {
        "success": "true",
       "challenge_ts": "2016-10-11T11:50:43Z",
       "hostname": "127.0.0.1"
   }
   
 FUNKCJA VALIDUJĄCA : 
 
 def verify_grecaptcha(response):

   secret_key = "SEKRET_KEY"
   response = "response"
   url = "https://www.google.com/recaptcha/api/siteverify" + '?secret=' + secret_key + '&response=' + response
   jsonobj = json.loads(urlopen(url).read().decode('utf-8'))
   if jsonobj["success"] == 'true' :
       return True
   else:
       return False

       
Wiem że połączenie z serwerem googla następuje i dostaje prawidłowe odpowiedzi - mam problem prawdopodobnie w rozpakowaniu json'a lub warunku i nie potrafię stwierdzić dlaczego.

W efekcie za każdym razem ląduje na stronie - nie udało się dodać biegu - nawet jeśli wszystko było po stronie formularza na WWW. 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 817 wizyt
0 głosów
2 odpowiedzi 779 wizyt
pytanie zadane 5 czerwca 2022 w PHP przez TlenekWodoru Użytkownik (520 p.)
0 głosów
1 odpowiedź 345 wizyt
pytanie zadane 18 sierpnia 2022 w Python przez Podlasianin Początkujący (400 p.)

93,377 zapytań

142,379 odpowiedzi

322,527 komentarzy

62,724 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...