Cómo usar la verificación OAuth personalizada con DiscourseConnect

Estoy en medio de intentar cambiar todo para usar mis métodos OAuth, y Discourse es lo último en mi lista.

Me encantaría completar las cosas si es una característica:

  1. ¿Cómo crearía campos de usuario públicos/privados para mostrar en su página de usuario sobre ellos? Como Rango de Grupo para que cualquiera lo vea, pero como ID de Discord para que solo los administradores y moderadores puedan verlo (¿también la API)?

Además, ¿cómo implementaría esto en Python usando Quart? Este es un código que programé, aunque la documentación es muy poco clara sobre cómo pasar datos para Discourse y cómo hacerlo, incluidos los campos de usuario, y tratar de evitar que los usuarios los editen.

from quart import Quart, redirect, request
from rblxopencloud import OAuth2App, Group
from roblox import RobloxUser

oauth_app = OAuth2App("ROBLOX_APP_ID", "ROBLOX_APP_SECRET", "ROBLOX_APP_REDIRECT")
app = Quart(__name__)
    
@app.route("/")
async def authentication_verify():
    return redirect(oauth_app.generate_uri(["openid", "profile"]))

@app.route("/authentication/redirect")
async def authentication_redirect():
    roblox_info = oauth_app.exchange_code(request.args.get('code'))
    
    group_member: Group = RobloxUser.fetch_member(roblox_info.user, 4800717)
    group_rank = "Sujeto de Prueba"
    
    if group_member != None:
        group_rank = group_member.fetch_role().name
    
    
    discord_id = "esto-se-extraerá-de-mi-bd"
    
    return {
        "permalink": roblox_info.user.username,
        "username": roblox_info.user.username, 
        "uri": roblox_info.user.profile_uri, 
        "avatar_url": roblox_info.user.generate_headshot(size=420, format="jpeg", is_circular=True),
        
        # Estos me gustaría que fueran campos de usuario (públicos o privados)
        "group_rank": group_rank,  # Campo de Usuario Público
        "discord_id": discord_id,  # Campo de Usuario Privado
        "roblox_id": roblox_info.user.id, # Campo de Usuario Privado
    }

app.run(host="ip-del-host-aqui", port=0000)

Siempre que hablo de los campos de usuario, me refiero a esto que está en el enlace del perfil de usuario:

reflotando esto ya que todavía necesito ayuda.

Todavía necesito ayuda con esto; aún no lo he resuelto.

Actualización sobre mi pregunta:

  1. ¿Tengo que codificar la URL con base64 o puedo dejarla normal sin codificarla?
  2. ¿Cómo devolvería los datos? ¿Es algo como esto:
return {
        "permalink": roblox_info.user.username,
        "username": roblox_info.user.username,
        "uri": roblox_info.user.profile_uri,
        "avatar_url": roblox_info.user.generate_headshot(size=420, format="jpeg", is_circular=True),

        # Estos me gustaría que fueran campos de usuario (públicos o privados)
        "group_rank": group_rank,  # Campo de usuario público
        "discord_id": discord_id,  # Campo de usuario privado
        "roblox_id": roblox_info.user.id, # Campo de usuario privado
    }