Как использовать пользовательскую проверку OAuth с DiscourseConnect?

Я сейчас в процессе перехода на использование моих OAuth-методов, и Discourse — последний пункт в моём списке.

Мне бы очень хотелось завершить это, если такая функция существует:

  1. Как создать публичные/приватные поля пользователя для отображения на странице «Обо мне»? Например, «Ранг в группе» для всех, но «Discord ID» только для администраторов и модераторов (также через API)?

Также, как реализовать это на Python с использованием Quart? Вот код, который я написал, но документация очень неясна в том, как передавать данные в Discourse, как включать поля пользователя и как сделать так, чтобы пользователи не могли их редактировать.

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),
        
        # Эти поля я бы хотел сделать полями пользователя (публичными или приватными)
        "group_rank": group_rank,  # Публичное поле пользователя
        "discord_id": discord_id,  # Приватное поле пользователя
        "roblox_id": roblox_info.user.id, # Приватное поле пользователя
    }

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

Когда я говорю о полях пользователя, я имею в виду то, что находится в ссылке профиля пользователя:

Поднимаю эту тему, так как мне всё ещё нужна помощь.

Всё ещё нужна помощь по этому вопросу — пока не разобрался.

Обновление по моему вопросу:

  1. Нужно ли мне кодировать URL в base64, или я могу оставить его как есть без кодирования?
  2. Как мне возвращать данные? Это что-то вроде:
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),
        
        # Эти поля я бы хотел сделать полями пользователя (публичными или приватными)
        "group_rank": group_rank,  # Публичное поле пользователя
        "discord_id": discord_id,  # Приватное поле пользователя
        "roblox_id": roblox_info.user.id, # Приватное поле пользователя
    }