与 Management API 交互
什么是 Logto Management API?
Logto Management API 是一套全面的 API,赋予开发者对实现方案的完全控制,以满足产品需求和技术栈。它是预置的,列在 控制台 > API 资源 > Logto Management API,且无法被删除或修改。
其标识符格式为 https://[tenant-id].logto.app/api
Logto Management API 的标识符在 Logto Cloud 和 Logto 开源版 之间有所不同:
- Logto Cloud:
https://[tenant-id].logto.app/api
- Logto OSS:
https://default.logto.app/api
在以下示例中,我们将使用 Cloud 版本的标识符。


通过 Logto Management API,你可以访问 Logto 强大的后端服务,这些服务具备高度可扩展性,并可应用于多种场景。它的能力远超 Admin Console 的低代码功能。
以下是一些常用的 API:
想了解更多可用的 API,请访问 https://openapi.logto.io/。
如何访问 Logto Management API
创建 M2M 应用
如果你还不熟悉 M2M(机器对机器)认证 (Authentication) 流程,建议先阅读 理解认证 (Authentication) 流程 以了解基本概念。
前往 控制台 > 应用程序,选择“机器对机器”应用类型并开始创建流程。
在创建 M2M 应用程序的过程中,你会被引导到一个页面,在这里你可以为你的应用程序分配 M2M 角色:

或者,当你已经创建了 M2M 应用程序后,也可以在 M2M 应用详情页分配这些角色:

在角色分配模块中,你可以看到所有 M2M 角色都已包含,带有 Logto 图标的角色表示这些角色包含 Logto Management API 权限。
现在为你的 M2M 应用分配包含 Logto Management API 权限的 M2M 角色。
获取访问令牌 (Access token)
关于访问令牌 (Access token) 请求的基础知识
M2M 应用通过向令牌请求端点发送 POST
请求来获取访问令牌 (Access token),在 HTTP 请求实体主体中使用 application/x-www-form-urlencoded
格式添加以下参数:
- grant_type:必须设置为
client_credentials
- resource:你想要访问的资源
- scope:访问请求的权限 (Scope)
你还需要在请求头中包含 M2M 应用的凭据,以便令牌请求端点认证 (Authentication) 你的 M2M 应用。
这是通过在请求的 Authorization
头中以 基本认证 (Basic authentication) 形式包含应用的凭据来实现的,其中用户名是 App ID,密码是 App Secret。
你可以在 M2M 应用的详细信息页面找到 App ID 和 App Secret:

获取 Logto Management API 的访问令牌 (Access token)
Logto 提供了一个内置的 “日志管理 API (Logto Management API)” 资源,它是一个只读资源,具有访问日志管理 API (Logto Management API) 的 all
权限,你可以在你的 API 资源列表中看到它。资源 API 指示器的模式是 https://{your-tenant-id}.logto.app/api
,这将是你在访问令牌请求正文中使用的资源值。

在访问日志管理 API (Logto Management API) 之前,确保你的 M2M 应用已被分配了包含此内置 “日志管理 API (Logto Management API)” 资源的 all
权限的 M2M 角色。
Logto 还为新创建的租户提供了一个预配置的 “日志管理 API (Logto Management API) 访问” M2M 角色,该角色已经分配了日志管理 API (Logto Management API) 资源的所有权限。你可以直接使用它,而无需手动设置权限。这个预配置的角色也可以根据需要进行编辑和删除。
现在,组合我们所有的内容并发送请求:
- Node.js
- cURL
const logtoEndpoint = 'https://your.logto.endpoint'; // 用你的 Logto 端点替换
const tokenEndpoint = `${logtoEndpoint}/oidc/token`;
const applicationId = 'your-application-id';
const applicationSecret = 'your-application-secret';
const tenantId = 'your-tenant-id';
const fetchAccessToken = async () => {
return await fetch(tokenEndpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Basic ${Buffer.from(`${applicationId}:${applicationSecret}`).toString(
'base64'
)}`,
},
body: new URLSearchParams({
grant_type: 'client_credentials',
resource: `https://${tenantId}.logto.app/api`,
scope: 'all',
}).toString(),
});
};
curl --location \
--request POST 'https://your.logto.endpoint' \
--header 'Authorization: Basic ${your_auth_string}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'resource=https://${tenantId}.logto.app/api' \
--data-urlencode 'scope=all'
记得用你自己的实际值替换。
对于日志云 (Logto Cloud) 用户:当你与日志管理 API (Logto Management API) 交互时,不能使用自定义域名,请使用默认的 Logto 端点 https://{your_tenant_id}.logto.app/oidc/token
来授予访问令牌。
访问令牌 (Access token) 响应
成功的访问响应体如下所示:
{
"access_token": "eyJhbG...2g", // 用于访问 Logto Management API 的令牌
"expires_in": 3600, // 令牌过期时间(秒)
"token_type": "Bearer", // 使用访问令牌时请求的认证类型
"scope": "all" // Logto Management API 的 scope 为 `all`
}
Logto 目前不支持 M2M 应用表示用户。访问令牌 (Access token) 负载中的 sub
将是应用 ID。
使用访问令牌 (Access token) 访问 Logto Management API
你可能会注意到令牌响应中有一个 token_type
字段,它固定为 Bearer
。
因此,当你与 API 资源 (API resource) 服务器交互时,应该将访问令牌 (access token) 以 Bearer 格式(Bearer YOUR_TOKEN
)放在 HTTP 头的 Authorization
字段中。
使用请求的访问令牌 (Access token) 和内置的 Logto Management API 资源 https://[your-tenant-id].logto.app/api
来获取 Logto 中的所有应用:
- Node.js
- cURL
const logtoEndpoint = 'https://your.logto.endpoint'; // Replace with your Logto endpoint
const accessToken = 'eyJhb...2g'; // Access Token
const fetchLogtoApplications = async () => {
return await fetch(`${logtoEndpoint}/api/applications`, {
method: 'GET',
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
};
curl --location \
--request GET 'https://your.logto.endpoint/api/applications' \
--header 'Authorization: Bearer eyJhbG...2g'
记得用你自己的实际值替换。Bearer
后的值应该是你收到的访问令牌 (JWT)。
Logto Management API 的典型使用场景
我们的开发者已经通过 Logto Management API 实现了许多附加功能。我们相信我们的 API 具备极高的可扩展性,可以满足你广泛的需求。以下是一些无法通过 Logto Admin Console 实现,但可以通过 Logto Management API 实现的场景示例。
自定义实现用户资料页
Logto 目前尚未提供预置的用户资料 UI 方案。我们认识到用户资料与业务和产品属性密切相关。在我们探索最佳方案的同时,建议你使用我们的 API 自行实现。例如,你可以利用我们的交互 API、资料 API 和验证码 API 开发满足你需求的自定义方案。
高级用户搜索
Logto Admin Console 支持基础的搜索和筛选功能。对于模糊搜索、精确匹配、区分大小写等高级搜索选项,请参考我们的 高级用户搜索 教程和指南。
自定义实现组织管理
如果你正在使用 组织 (Organizations) 功能构建多租户应用,可能需要 Logto Management API 来处理组织邀请和成员管理等任务。对于你的 SaaS 产品,在租户中既有管理员又有成员时,Logto Management API 可以帮助你创建符合业务需求的自定义管理后台。详细内容请查看 这里。
使用 Logto Management API 的小贴士
管理分页 API 响应
部分 API 响应可能包含大量结果,结果会被分页。Logto 提供了两种分页信息。
使用 link headers
分页响应头示例如下:
Link: <https://logto.dev/users?page=1&page_size=20>; rel="first"
link header 提供了上一页、下一页、第一页和最后一页结果的 URL:
- 上一页的 URL 后跟 rel="prev"。
- 下一页的 URL 后跟 rel="next"。
- 最后一页的 URL 后跟 rel="last"。
- 第一页的 URL 后跟 rel="first"。
使用 total-number header
除了标准的 link headers,Logto 还会添加一个 Total-Number
header:
Total-Number: 216
这对于显示页码非常方便和实用。
更改页码和每页数量
有两个可选查询参数:
page
:表示页码,从 1 开始,默认值为 1。page_size
:表示每页条目数,默认值为 20。
速率限制
仅适用于 Logto Cloud。
为了确保所有用户服务的可靠性和安全性,我们采用了通用防火墙来监控和管理网站流量。虽然我们没有强制的速率限制,但建议用户每 10 秒内的请求量控制在 200 次以内,以避免触发保护机制。
相关资源
使用 Logto Management API:分步指南使用 Postman 快速获取 M2M 访问令牌 (Access token)