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.