Я сейчас в процессе перехода на использование моих OAuth-методов, и Discourse — последний пункт в моём списке.
Мне бы очень хотелось завершить это, если такая функция существует:
- Как создать публичные/приватные поля пользователя для отображения на странице «Обо мне»? Например, «Ранг в группе» для всех, но «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)
