Como usar verificação OAuth personalizada com DiscourseConnect?

Estou no meio de tentar migrar tudo para usar meus métodos OAuth, e o Discourse é a última coisa na minha lista.
As coisas que eu adoraria completar se for um recurso:

  1. Como eu criaria campos de usuário públicos/privados para exibir em suas páginas de usuário sobre eles? Como Rank do Grupo para qualquer um ver, mas como ID do Discord para que apenas administradores e moderadores possam ver (também API)?

Além disso, como eu implementaria isso em python usando Quart? Este é um código que programei, embora a documentação seja muito pouco clara sobre como passar dados para o Discourse e como fazer isso, incluindo Campos de Usuário, e tentar fazer com que os usuários não possam editá-los.

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 = "Test Subject"
    
    if group_member != None:
        group_rank = group_member.fetch_role().name
    
    
    discord_id = "this-will-pull-from-my-db"
    
    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),
        
        # Estes eu gostaria que fossem campos de usuário (públicos ou privados)
        "group_rank": group_rank,  # Campo de Usuário Público
        "discord_id": discord_id,  # Campo de Usuário Privado
        "roblox_id": roblox_info.user.id, # Campo de Usuário Privado
    }

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

Sempre que falo sobre campos do Usuário, refiro-me a este que está no link do perfil do Usuário:

elevando este tópico, pois ainda preciso de ajuda.

Ainda preciso de ajuda com isso - ainda não descobri.

Atualização sobre minha pergunta:

  1. Preciso codificar a URL com base64 ou posso deixá-la normal sem codificar?
  2. Como eu retornaria os dados? Seria algo como:
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),

        # Estes eu gostaria que fossem campos do usuário (públicos ou privados)
        "group_rank": group_rank,  # Campo de Usuário Público
        "discord_id": discord_id,  # Campo de Usuário Privado
        "roblox_id": roblox_info.user.id, # Campo de Usuário Privado
    }