跳转到主要内容
欢迎使用 RollingGo OAuth 2.0 授权服务!本文档旨在帮助第三方开发者将 RollingGo 账户登录集成到自己的应用中。我们支持标准的 OAuth 2.0 授权码模式 (Authorization Code Grant),并推荐客户端(尤其是移动端、桌面端、SPA 等公共客户端)结合使用 PKCE (Proof Key for Code Exchange) 安全扩展。 RollingGo 提供两个服务节点,接入流程与参数完全一致,仅端点域名不同。请根据您的目标用户选择对应节点:
MCP Host 为 RollingGo MCP (Model Context Protocol) 服务主机,用于让 AI 应用(如智能体、LLM 客户端)通过标准 MCP 协议连接 RollingGo 的酒店能力。连接地址为 https://<MCP_HOST>/mcp/hotel,详见下文「场景 2:连接 MCP 服务」。
下文示例中统一使用 <API_DOMAIN> 与 <MCP_HOST> 占位符,请替换为您对应节点的域名。

🚀 授权接入流程

接入前准备:请确保您已经从 RollingGo 获取了 client_id(客户端 ID),并确认 RollingGo 已为您配置了允许的 redirect_uri(重定向 URI)。如尚未获取,请联系您的对接商务。
接入流程主要分为三个步骤:
  1. 引导用户访问授权页面,获取授权码 (code)。
  2. 接收重定向,获取授权码 (code)。
  3. 使用授权码 (code) 兑换访问令牌 (access_token)。

步骤 1:请求授权 (Request Authorization)

您的应用需要引导用户跳转到 RollingGo 的授权端点。 请求方法: GET 请求 URL(根据您的节点选择):
  • 中国大陆: https://api.rollinggo.cn/oauth2/authorize
  • 海外及港澳台: https://api.rollinggo.ai/oauth2/authorize
请求参数 (Query): 请求示例(将 <API_DOMAIN>、<MCP_HOST> 替换为对应节点域名):
错误响应:
用户体验说明:如果所有参数校验通过,RollingGo 会展示登录页面(邮箱 + 验证码登录)。用户完成登录后,如果该应用是首次授权,会展示授权确认页面,列出所有请求的 scope 及其含义。用户确认后,浏览器将重定向到 redirect_uri 并附带授权码。

步骤 2:接收授权码 (Handle Callback)

用户在 RollingGo 页面完成登录并同意授权后,浏览器将会重定向到您在第一步中提供的 redirect_uri,并在 URL 的 Query String 中附带授权码 (code)。 重定向示例:
回调参数: 错误回调示例(用户拒绝授权或发生错误时):

步骤 3:兑换令牌 (Exchange Code for Token)

拿到 code 后,您的后端服务(或使用 PKCE 的公共客户端)需要向 RollingGo 的令牌端点发起 POST 请求,将 code 兑换为 access_token。 请求方法: POST 请求 URL(根据您的节点选择):
  • 中国大陆: https://api.rollinggo.cn/oauth2/token
  • 海外及港澳台: https://api.rollinggo.ai/oauth2/token
Content-Type: application/x-www-form-urlencoded(不支持 application/json) 请求参数 (Body):
注意:refresh_token 仅在您使用 机密客户端(即配置了 client_secret)时才会在响应中返回。公共客户端不返回 refresh_token。
请求示例 (Curl,机密客户端):
请求示例 (Curl,公共客户端 + PKCE):
成功响应示例 (HTTP 200):
响应参数说明: 错误响应示例 (HTTP 400):
支持与联系:如您在接入过程中遇到 client_id 无效、redirect_uri 不匹配、client_secret 丢失或任何配置相关问题,请联系您的 RollingGo 对接商务团队协助处理。

🛡️ 安全建议:PKCE 必读

PKCE (Proof Key for Code Exchange) 用于防止授权码被拦截后利用。对于无后端的纯前端应用 (SPA)、桌面端或移动端等公共客户端,强烈建议使用 PKCE,避免在客户端代码中硬编码 client_secret。步骤 1 和步骤 3 均会用到下述方法生成的值。工作原理:
  1. 生成 code_verifier:客户端生成一个高熵的随机字符串(长度 43-128 字符,仅包含 [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~" 字符)。
  2. 计算 code_challenge:对 code_verifier 执行 SHA256 哈希,然后进行 Base64URL 编码(不带 = 填充)。
  3. 请求授权页(步骤 1):携带 code_challenge 和 code_challenge_method=S256。
  4. 兑换令牌(步骤 3):携带原始的 code_verifier,无需传递 client_secret(公共客户端)。RollingGo 会在后端执行相同的 SHA256 计算并比对,不匹配则拒绝颁发 Token。

🛠️ 如何使用 Access Token (调用受保护资源)

拿到 access_token 后,您就可以代表用户访问 RollingGo 提供的各类受保护资源或连接 MCP Server 了。 在使用时,您只需将 access_token 放入 HTTP 请求头的 Authorization 字段中,并以 Bearer (注意后面有一个空格)开头。

场景 1:访问 REST API 资源(用户信息)

例如,访问用户信息端点 /userinfo: 请求示例 (Curl):
成功响应示例 (HTTP 200):

场景 2:连接 MCP (Model Context Protocol) 服务

当您的 MCP 客户端与 RollingGo 的 MCP Server 建立 SSE 或 WebSocket 连接时,同样需要在初始 HTTP 请求中带上鉴权 Header。
  • 中国大陆 MCP Server: https://mcp.rollinggo.cn/mcp/hotel
  • 海外及港澳台 MCP Server: https://mcp.rollinggo.ai/mcp/hotel
SSE 连接示例 (Node.js/JS 伪代码):
MCP SDK 客户端连接示例 (TypeScript):

场景 3:使用 Refresh Token 续期

当 access_token 过期后,您可以使用 refresh_token 获取新的 access_token,无需用户重新登录。
适用范围:refresh_token 仅对**机密客户端(配置了 client_secret)**有效。公共客户端不会获得 refresh_token,如需长期访问请重新走授权流程。
请求方法: POST 请求 URL(根据您的节点选择):
  • 中国大陆: https://api.rollinggo.cn/oauth2/token
  • 海外及港澳台: https://api.rollinggo.ai/oauth2/token
请求参数 (Body): 请求示例 (Curl):
成功响应示例:
重要:使用 refresh_token 后,响应中可能返回一个新的 refresh_token。请以实际响应为准,并妥善保存每次返回的新 refresh_token。

场景 4:撤销 Token

当用户退出登录或您需要使某个 Token 失效时,可以调用撤销端点。 请求方法: POST 请求 URL(根据您的节点选择):
  • 中国大陆: https://api.rollinggo.cn/oauth2/revoke
  • 海外及港澳台: https://api.rollinggo.ai/oauth2/revoke
请求参数 (Body): 请求示例 (Curl):
成功响应: HTTP 200(空响应体)

场景 5:Token 内省 (Introspection)

用于验证一个 Token 是否有效,并获取其元数据(适用于资源服务器端验证)。 请求方法: POST 请求 URL(根据您的节点选择):
  • 中国大陆: https://api.rollinggo.cn/oauth2/introspect
  • 海外及港澳台: https://api.rollinggo.ai/oauth2/introspect
请求参数 (Body): 请求示例 (Curl):
成功响应示例(Token 有效时):
Token 无效时响应:

📋 附录:基础信息(参考)

本附录供手动配置、故障排查时查阅,正常接入无需阅读。RollingGo 提供标准的 OAuth 2.0 / OpenID Connect 服务发现机制,开发者可以直接请求以下端点,自动获取授权服务器支持的所有配置(包括各种端点 URL、支持的 scope、加密算法等):
  • OAuth 2.0 发现端点: https://<API_DOMAIN>/.well-known/oauth-authorization-server
  • OIDC 发现端点: https://<API_DOMAIN>/.well-known/openid-configuration

核心端点总览

支持的 Scope 列表

以上 Scope 列表与授权服务器 .well-known/oauth-authorization-server 返回的 scopes_supported 完全一致。
注意:请求 hotel:order:book、hotel:order:cancel 等写操作 scope 时,授权确认页面会明确提示用户该应用将代表其执行的操作。用户可选择拒绝部分 scope。

服务器能力摘要

根据服务发现端点返回的实际配置,RollingGo 授权服务器支持以下能力:
本表内容均来自授权服务器 .well-known/oauth-authorization-server 与 .well-known/openid-configuration 实际返回的配置。除本文档演示的授权码模式外,device_code、token-exchange 等流程如需使用,请联系您的对接商务获取对应接入说明。
最后修改于 2026年10月22日