Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 22017

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

$
0
0

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. 


Viewing all articles
Browse latest Browse all 22017

Trending Articles