如何在 DiscourseConnect 中使用自定义 OAuth 验证

我正在尝试将所有内容切换为使用我的 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, # 私有用户字段
    }