For the complete documentation index, see llms.txt. This page is also available as Markdown.

Toss 登录

服务介绍和控制台设置方法是 Toss 登录介绍文档请参考。

基本信息

项目

Base URL

https://apps-in-toss-api.toss.im

服务器认证

mTLS(客户端证书)

Content-Type

application/json

服务器间通信需要 mTLS 证书

Toss 登录 API 是从合作方服务器调用到 Apps in Toss 服务器的服务器间通信。为保障安全,请先在服务器上配置 mTLS 证书后再调用。证书发放方法是 mTLS 证书发放方法


1. 获取授权码

SDK 函数: appLogin

appLogin使用 Toss App 的认证流程执行登录,登录成功后返回授权码(authorizationCode)作为返回值。

请注意

  • 此步骤 客户端(迷你应用) 只负责获取授权码。

  • 获取授权码之后的 token 交换 / AccessToken 发放 / 用户信息查询必须在 服务器上处理。

  • 授权码的有效时间为 10分钟

  • 授权码是 一次性的,重复使用会失败。

  • authorizationCode请不要在客户端长期保存。

  • 敏感信息(AccessToken, RefreshToken 等)应 在服务器上安全保管

首次进行 Toss 登录时 appLogin 调用该函数后会打开 Toss 登录窗口,并显示在 Apps in Toss 控制台中注册的条款同意页面。用户同意必需条款后会返回授权码。

已进行过 Toss 登录时 appLogin 调用该函数后无需额外登录窗口即可直接返回授权码。

签名

返回值

  • authorizationCode string

    这是在用户认证完成后发放的授权码。将其传到服务器并交换为 AccessToken。

  • referrer string

    表示登录请求是在什么环境中发生的。DEFAULT:实际 Toss App 环境,SANDBOX:沙箱环境

示例:通过 Toss 认证进行登录的示例

体验示例应用

apps-in-toss-examples 在仓库中 with-app-login 下载代码并试用。


2. 获取 AccessToken

用于调用用户信息查询 API 的 发放访问令牌。

  • Content-Type: application/json

  • Method: POST

  • URL: /api-partner/v1/apps-in-toss/user/oauth2/generate-token

请参考

AccessToken 的有效时间为 1 小时。

请求

名称
类型
是否必填
说明

authorizationCode

string

Y

授权码

referrer

string

Y

referrer

成功响应

名称
类型
是否必填
说明

tokenType

string

Y

固定为 bearer

accessToken

string

Y

accessToken

refreshToken

string

Y

refreshToken

expiresIn

string

Y

过期时间(秒)

scope

string

Y

已授权的 scope(区分)

失败响应 当授权码已过期,或使用同一授权码重复请求 AccessToken 时

3. 重新获取 AccessToken

重新发放用于调用用户信息查询 API 的访问令牌。

  • Content-type : application/json

  • Method : POST

  • URL : /api-partner/v1/apps-in-toss/user/oauth2/refresh-token

请参考

refreshToken 的有效时间为 14 天。

请求

名称
类型
是否必填
说明

refreshToken

string

Y

已发放的 RefreshToken

成功响应

名称
类型
是否必填
说明

tokenType

string

Y

固定为 bearer

accessToken

string

Y

accessToken

refreshToken

string

Y

refreshToken

expiresIn

string

Y

过期时间(秒)

scope

string

Y

已授权的 scope(区分)

失败响应

名称
类型
是否必填
说明

errorCode

string

Y

错误代码

reason

string

Y

错误消息

4. 获取用户信息

查询用户信息。 DInull会返回,并且可无限次调用。为保护个人信息,所有个人信息都以 加密形式提供。

  • Content-type : application/json

  • Method : GET

  • URL : /api-partner/v1/apps-in-toss/user/oauth2/login-me

scopeuser_key 值将会追加

scope 参数为 控制台中选择的项目里,仅返回用户同意的值。 返回。 从 2026 年 1 月 2 日起 scope 值中 user_key 将追加项目。 由于新增 scope 可能包含之前未定义的值, 请注意处理 scope 时不要发生异常。

请求头

名称
类型
是否必填
说明

Authorization

string

Y

使用 AccessToken 进行认证请求 Authorization: Bearer ${AccessToken}

成功响应

名称
类型
是否必填
是否加密
说明

userKey

number

Y

N

这是仅能在该应用中使用的用户唯一标识值。即使是同一用户,如果应用不同,userKey 也可能不同。

scope

string

Y

N

已授权的 scope 列表。包含控制台中选择的项目里用户同意的值和 user_key 项目。

agreedTerms

list

Y

N

用户同意的条款列表。

name

string

N

Y

用户姓名。

phone

string

N

Y

用户手机号码。

birthday

string

N

Y

用户出生日期。(yyyyMMdd)

ci

string

N

Y

用户 CI 值。

di

string

N

Y

始终 null 值返回。

gender

string

N

Y

用户性别信息。(MALE/FEMALE)

nationality

string

N

Y

用户是否为本国人/外国人信息。(LOCAL/FOREIGNER)

email

string

N

Y

用户邮箱信息。该值未进行归属认证。

userKey 按应用单独发放

userKey 是仅在该应用中有效的标识。同一用户如果应用不同,会发放不同的 userKey。

失败响应 如果使用无效令牌,请确认当前使用中的 access_token 的有效时间并重新发放。

服务器错误响应示例

errorCode
说明

INTERNAL_ERROR

内部服务器错误

USER_KEY_NOT_FOUND

无法找到接入登录服务的用户 key 值

USER_NOT_FOUND

无法找到 Toss 用户信息

BAD_REQUEST_RETRIEVE_CERT_RESULT_EXCEEDED_LIMIT

查询次数超限,使用同一令牌 /api/login/user/me/without-di 查询 API 后可以正常查询,但 di 字段会以 null 值返回

5. 解密用户信息

通过控制台邮箱收到的 解密密钥AAD(Additional Authenticated DATA) 进行。

加密算法

  • AES 对称密钥加密

  • 密钥长度:256 位

  • 模式:GCM

  • AAD:与解密密钥一起通过电子邮件发送给您。

数据交换方式

  • 加密数据的前半部分包含 IV(NONCE)。

  • 解密时必须从密文中提取 IV 才能正常解密。

解密示例代码

Kotlin 示例
PHP 示例
JAVA 示例

6. 断开登录

如果不再使用已发放的 AccessToken,或因用户请求需要使令牌失效,请删除(使其失效)令牌。

  • Content-type : application/json

  • Method : POST

  • URL :

    • 通过 accessToken 断开连接: /api-partner/v1/apps-in-toss/user/oauth2/access/remove-by-access-token

    • 通过 userKey 断开连接: /api-partner/v1/apps-in-toss/user/oauth2/access/remove-by-user-key

通过 AccessToken 断开登录连接

通过 userKey 断开登录连接

请参考

如果一个 userKey 关联了很多 AccessToken 可能会发生 readTimeout(3 秒) 。这种情况下请不要重试请求,请在一段时间后再试。

7. 通过回调断开登录

当用户在 Toss App 内解除与服务的连接时,会通知到商家服务器。如需对已断开连接的用户进行处理,可以使用此功能。可在控制台中输入接收回调的 URL 和 basic Auth 标头。

请务必确认

如果在服务中直接调用断开登录连接 API, 则不会触发回调。

GET 方式

  • 请求 requestParam 中 userKeyreferrer包含

POST 方式

  • 请求 body 中 userKeyreferrer包含

referrer 是断开连接请求路径。

referrer
说明

UNLINK

当用户在 Toss App 中直接断开连接时调用。(路径:Toss App → 设置 → 认证与安全 → 使用 Toss 登录的服务 → '断开连接')

WITHDRAWAL_TERMS

当用户撤回登录服务条款同意时调用。(路径:Toss App → 设置 → 法律信息及其他 → 条款及个人信息处理同意 → 按服务分类的同意内容:"Toss 登录" → '撤回同意')

WITHDRAWAL_TOSS

当用户注销 Toss 会员时调用。

故障排查

本地开发时发生认证错误时

本地开发时发生认证错误的原因主要有两种。

  1. 认证令牌已过期 之前发放的认证令牌可能已过期。请获取新令牌后重试。

  2. 开发者登录失败 可能是在沙箱环境中尚未使用开发者账号登录。请参考沙箱应用下载,完成登录后再试。

最后更新于

这有帮助吗?