I'm trying to implement Google login using Flask Python. All the keys match in my app and Google API settings. Everywhere I've set localhost with port 5000. It allows me to log in, I confirm it via my phone, but when it should redirect to the main page with the logged-in user, it throws the error shown in image No. 2. IMAGE from flask import Flask, render_template, request, redirect, url_for, flash from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user from werkzeug.security import generate_password_hash, check_password_hash from flask_dance.contrib.google import make_google_blueprint, google import os from flask_dance.contrib.google import make_google_blueprint, google app = Flask(__name__) app.secret_key = 'kasjkjk48g48d48s4848df' # leidžiam naudoti HTTP (tik testavimui) os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" # Google OAuth blueprint google_bp = make_google_blueprint( client_id="501193612xxxj3de342hp2bg.apps.googleusercontent.com", client_secret="GOCSPxxxpH28YVhpv_ELbbU", redirect_url="http://localhost:5000/login/google/authorized", # Patikrinkite, kad šis URL tiksliai atitiktų scope=["openid", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"] ) app.register_blueprint(google_bp, url_prefix="/login") # PostgreSQL nustatymai DB_USER = 'xxxx' DB_PASSWORD = 'xxx' DB_HOST = '127.0.0.1' DB_NAME = 'autogptdb' app.config['SQLALCHEMY_DATABASE_URI'] = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}/{DB_NAME}' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # ✅ Flask-Login setup login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = 'login' # jei vartotojas nėra prisijungęs – redirectins į login # ✅ Vartotojų modelis class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, nullable=False) password = db.Column(db.String(200), nullable=True) # ✅ User loader @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) # ✅ Sukuria lenteles, jei jų nėra def create_tables(): with app.app_context(): db.create_all() @app.route('/') def home(): return render_template('index.html', user=current_user) @app.route("/login/google/authorized") def google_login(): if not google.authorized: flash("Nepavyko prisijungti per Google.", "danger") return redirect(url_for("login")) # Nebereikia dar kartą pereiti į Google login. try: resp = google.get("/oauth2/v2/userinfo") if not resp.ok: flash("Nepavyko gauti informacijos iš Google", "danger") return redirect(url_for("login")) user_info = resp.json() email = user_info.get("email") if not email: flash("Google nepateikė el. pašto", "danger") return redirect(url_for("login")) user = User.query.filter_by(username=email).first() if not user: # Jei nėra vartotojo, sukuriame jį user = User(username=email, password=None) # Nereikia slaptažodžio, nes prisijungta per Google db.session.add(user) db.session.commit() login_user(user) # Prisijungimas flash("Prisijungta per Google!", "success") return redirect(url_for("home")) # Nukreipimas į pagrindinį puslapį except Exception as e: flash(f"Klaida: {e}", "danger") return redirect(url_for("login")) @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] confirm_password = request.form['confirm_password'] if password != confirm_password: flash('Slaptažodžiai nesutampa', 'danger') return redirect(url_for('register')) hashed_password = generate_password_hash(password) if User.query.filter_by(username=username).first(): flash('Vartotojas jau egzistuoja', 'danger') return redirect(url_for('register')) new_user = User(username=username, password=hashed_password) db.session.add(new_user) db.session.commit() flash('Registracija sėkminga, prisijunkite', 'success') return redirect(url_for('login')) return render_template('register.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user and check_password_hash(user.password, password): login_user(user) flash('Prisijungta sėkmingai', 'success') return redirect(url_for('home')) else: flash('Neteisingi prisijungimo duomenys', 'danger') return render_template('login.html') @app.route('/dashboard') @login_required def dashboard(): return render_template('dashboard.html') @app.route('/logout') @login_required def logout(): logout_user() flash('Atsijungta sėkmingai', 'info') return redirect(url_for('home')) if __name__ == "__main__": create_tables() app.run(host="0.0.0.0", port=5000, debug=True) Perhaps someone knows the solution? Thank you. Continue reading...