Spaces:
Sleeping
Sleeping
| 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" | |
| ) | |
| def index(): | |
| user = session.get("user") | |
| if user: | |
| return f"Hello {user['email']}! <a href='/logout'>Logout</a>" | |
| return "<a href='/login'>Login with Google</a>" | |
| def login(): | |
| redirect_uri = REDIRECT_URI | |
| return google.authorize_redirect(redirect_uri) | |
| 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 | |
| def logout(): | |
| session.pop("user", None) | |
| return redirect("/") | |
| 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) | |