Проблема перенаправления при попытке аутентификации пользователя с помощью SupabasePython

Программы на Python
Ответить
Anonymous
 Проблема перенаправления при попытке аутентификации пользователя с помощью Supabase

Сообщение Anonymous »

Привет, я пытаюсь создать приложение, которое позволит пользователю входить в систему с помощью сторонних сервисов, точнее, я использую supabase. Я написал код, который, похоже, работает, он позволяет мне без проблем входить в систему до тех пор, пока после входа в систему я не получу страницу с ошибкой Google по этой ссылке http://localhost:3000/#access_token=eyJhbGc... вместо перенаправления на нужную страницу.

Код: Выделить всё

supabase: Client = create_client(supabase_url, supabase_key)

# Decorator personalizzato login_required
def login_required(f):
def wrapper(*args, **kwargs):
if 'user' not in session:
return redirect(url_for('login'))
return f(*args, **kwargs)
return wrapper

@app.route('/')
def home():
if 'user' in session:
return redirect('/dashboard')
return '''
[url=/login/github]Login with GitHub[/url]

[url=/login/google]Login with Google[/url]

[url=/login/microsoft]Login with Microsoft[/url]
'''  # Pulsanti di login per ogni provider

@app.route('/login/
')
def login(provider):
# Reindirizza l'utente al link di login di Supabase con il provider scelto
redirect_uri = url_for('callback', _external=True)
auth_url = f"{supabase_url}/auth/v1/authorize?provider={provider}&redirect_to={redirect_uri}"
logging.info(f"Redirect URL: {auth_url}")  # Aggiungi il log per vedere l'URL di redirect
return redirect(auth_url)

@app.route('/callback')
def callback():
# Gestione del callback dopo il login con il provider (GitHub, Google, Microsoft)
code = request.args.get('code')
if code:
try:
# Completa il login utilizzando il codice ricevuto
auth_response = supabase.auth.exchange_code_for_session(code)
user = supabase.auth.user()

# Salva i dati dell'utente nella sessione
session['user'] = user
logging.info(f"User info: {user}")  # Aggiungi log per vedere i dati dell'utente

# Salva o aggiorna l'utente nel database
user_data = {
'email': user['email'],
'name': user['user_metadata']['full_name'],
}

# Puoi anche inserire o aggiornare l'utente nel database Supabase
# supabase.table('users').upsert([user_data]).execute()

return redirect('/dashboard')  # Reindirizza alla dashboard dopo il login
except Exception as e:
logging.error(f"Error during authentication: {str(e)}")  # Log degli errori
return "Authentication failed", 400
return "Authentication failed", 400

@app.route('/dashboard')
def dashboard():
if 'user' in session:
# Mostra un messaggio di benvenuto all'utente loggato
return f'Sei loggato, {session["user"]["user_metadata"]["full_name"]}! [url=/logout]Logout[/url]'
return redirect('/')  # Se l'utente non è loggato, reindirizza alla home

@app.route('/logout')
def logout():
session.clear()
return redirect('/')

if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)  # Imposta il livello di log
app.run(debug=True, port=5000)
Я пытался удалить файлы cookie и кеш, но проблема все равно возникла


Подробнее здесь: https://stackoverflow.com/questions/793 ... g-supabase
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»