from flask import Flask, redirect, url_for, session, jsonify from authlib.integrations.flask_client import OAuth import os app = Flask(__name__) app.secret_key = os.getenv("SECRET_KEY", "supersecret") # OAuth config GOOGLE_CLIENT_ID = os.getenv("GOOGLE_CLIENT_ID").strip() GOOGLE_CLIENT_SECRET = os.getenv("GOOGLE_CLIENT_SECRET").strip() REDIRECT_URI = "https://adastra144-google-oauth.hf.space/google/auth/callback" # Setup Authlib oauth = OAuth(app) google = oauth.register( name="google", client_id=os.getenv("GOOGLE_CLIENT_ID"), client_secret=os.getenv("GOOGLE_CLIENT_SECRET"), server_metadata_url="https://accounts.google.com/.well-known/openid-configuration", client_kwargs={ "scope": "openid email profile" }, userinfo_endpoint="https://www.googleapis.com/oauth2/v3/userinfo" ) @app.route("/") def index(): user = session.get("user") if user: return f"Hello {user['email']}! Logout" return "Login with Google" @app.route("/login") def login(): redirect_uri = REDIRECT_URI return google.authorize_redirect(redirect_uri) @app.route("/google/auth/callback") def callback(): try: token = google.authorize_access_token() print("Token:", token) user = google.get("userinfo").json() print("User info:", user) return f"Hello {user.get('email', 'Unknown')}!" except Exception as e: import traceback traceback.print_exc() return f"Error: {str(e)}", 500 @app.route("/logout") def logout(): session.pop("user", None) return redirect("/") @app.route("/api/user") def api_user(): user = session.get("user") if user: return jsonify(user) return jsonify({"error": "Not logged in"}), 401 if __name__ == "__main__": app.run(host="0.0.0.0", port=7860)