You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python开发Roblox Authentication V2验证应用并实现登录页

如何在Python中实现Roblox Authentication V2 API登录功能

前置准备

  1. 在Roblox开发者后台创建OAuth2应用,获取client_id和client_secret,并配置好符合要求的redirect_uri(本地测试可使用http://localhost:5000/callback这类地址,正式环境需用公网可访问地址)。
  2. 安装依赖库:
pip install requests

核心流程与代码实现

1. 构造授权登录URL

引导用户访问该URL完成Roblox账号登录,登录成功后会跳转到你配置的redirect_uri并携带授权码code。

import requests

# 替换为你的应用信息
CLIENT_ID = "你的应用ID"
CLIENT_SECRET = "你的应用密钥"
REDIRECT_URI = "你的回调地址"
SCOPES = "openid profile email"  # 根据需求调整权限范围

def build_auth_url():
    auth_endpoint = "https://auth.roblox.com/v2/oauth2/authorize"
    params = {
        "client_id": CLIENT_ID,
        "redirect_uri": REDIRECT_URI,
        "response_type": "code",
        "scope": SCOPES,
        "state": "随机字符串"  # 用于防止CSRF攻击,建议生成随机值
    }
    return requests.Request("GET", auth_endpoint, params=params).prepare().url

# 生成登录URL
auth_url = build_auth_url()
print(f"引导用户访问:{auth_url}")

2. 用授权码兑换访问令牌

从回调地址的URL参数中获取code,调用接口兑换access_token(用于后续请求用户信息)和refresh_token(用于过期后刷新令牌)。

def exchange_code_for_token(code):
    token_endpoint = "https://auth.roblox.com/v2/oauth2/token"
    payload = {
        "grant_type": "authorization_code",
        "code": code,
        "redirect_uri": REDIRECT_URI,
        "client_id": CLIENT_ID,
        "client_secret": CLIENT_SECRET
    }
    response = requests.post(token_endpoint, data=payload)
    response.raise_for_status()  # 处理HTTP错误
    return response.json()

# 示例:获取用户输入的code(实际项目中从回调接口获取)
code = input("请输入回调地址中的code参数:")
token_data = exchange_code_for_token(code)
print("令牌数据:", token_data)

3. 获取用户信息

使用access_token调用接口获取登录用户的基本信息。

def get_user_info(access_token):
    userinfo_endpoint = "https://auth.roblox.com/v2/oauth2/userinfo"
    headers = {"Authorization": f"Bearer {access_token}"}
    response = requests.get(userinfo_endpoint, headers=headers)
    response.raise_for_status()
    return response.json()

user_info = get_user_info(token_data["access_token"])
print("用户信息:", user_info)

4. 刷新过期令牌

当access_token过期时,使用refresh_token获取新的令牌。

def refresh_access_token(refresh_token):
    token_endpoint = "https://auth.roblox.com/v2/oauth2/token"
    payload = {
        "grant_type": "refresh_token",
        "refresh_token": refresh_token,
        "client_id": CLIENT_ID,
        "client_secret": CLIENT_SECRET
    }
    response = requests.post(token_endpoint, data=payload)
    response.raise_for_status()
    return response.json()

# 示例:刷新令牌
new_token_data = refresh_access_token(token_data["refresh_token"])
print("新令牌数据:", new_token_data)

关键注意事项

  • client_secret是敏感信息,绝对不能暴露给前端代码,所有令牌兑换、刷新操作必须在后端完成。
  • state参数建议使用随机生成的字符串,验证回调时的state与生成登录URL时的一致,防止CSRF攻击。
  • 注意处理接口请求的异常情况,比如网络错误、令牌过期、授权失败等。
  • 不同的权限范围(scope)会影响能获取到的用户信息,根据你的应用需求调整。

内容的提问来源于stack exchange,提问作者Steel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:32:15