跳到主要内容

通过 Account API 进行账户设置

什么是 Logto Account API

Logto Account API 是一组全面的 API,允许终端用户直接访问 API,而无需通过 Management API。以下是其亮点:

  • 直接访问:Account API 使终端用户能够直接访问和管理自己的账户资料,而无需中转 Management API。
  • 用户资料和身份管理:用户可以完全管理他们的资料和安全设置,包括更新身份信息(如电子邮件、电话和密码)以及管理社交连接。MFA 和 SSO 支持即将推出。
  • 全局访问控制:管理员拥有完整的全局控制权,可以自定义每个字段。
  • 无缝授权 (Authorization):授权 (Authorization) 比以往更简单!只需使用 client.getAccessToken() 获取 OP (Logto) 的不透明访问令牌,并将其作为 Bearer <access_token> 附加到 Authorization 头中。

通过 Logto Account API,你可以构建一个自定义的账户管理系统,如与 Logto 完全集成的个人资料页面。

以下是一些常见的使用场景:

  • 检索用户资料
  • 更新用户资料
  • 更新用户密码
  • 更新用户身份信息,包括电子邮件、电话和社交连接
  • 管理 MFA 因素(验证)
  • 管理用户会话
  • 管理用户授权的应用程序(授权)

要了解更多可用的 API,请访问 Logto Account API 参考Logto Verification API 参考

备注:

SSO 账户查看和账户删除功能目前通过 Logto Management API 提供。有关实现细节,请参阅 通过 Management API 进行账户设置

如何启用 Account API

导航到 控制台 > 登录和账户 > 账户中心

Account API 默认关闭,因此其访问控制被锁定。切换 启用 Account API 以打开它。

启用后,为标识符、资料数据和第三方令牌访问配置每个字段的权限。每个字段支持 OffReadOnlyEdit;默认是 Off

  1. 安全字段
    • 字段包括:主电子邮件、主电话、社交身份、密码和 MFA。
    • 在终端用户编辑这些字段之前,他们必须通过密码、电子邮件或短信验证身份,以获得 10 分钟的验证记录 ID。请参阅 获取验证记录 ID
    • 要使用 WebAuthn 密钥进行 MFA,请将你的前端应用程序域添加到 WebAuthn 相关来源,以便账户中心和登录体验可以共享密钥。请参阅 链接新的 WebAuthn 密钥
  2. 资料字段
    • 字段包括:用户名、姓名、头像、资料(其他标准资料属性)和自定义数据
    • 终端用户可以在不进行额外验证的情况下编辑这些字段。
  3. 秘密保险库
    • 对于 OIDC 或 OAuth 社交和企业连接器,Logto 秘密保险库 在认证后安全地存储第三方访问和刷新令牌。应用程序可以调用外部 API,例如同步 Google 日历事件,而无需再次提示用户登录。一旦启用 Account API,令牌检索将自动可用。
  4. 会话管理
    • 启用后,用户可以查看和管理他们的活动会话,包括设备信息和上次登录时间。用户还可以撤销会话以从特定设备注销。
    • 同一 Sessions 字段权限也控制用户授权的应用程序(授权)API(查看和撤销授权)。
    • 在终端用户访问会话管理之前,他们必须通过密码、电子邮件或短信验证身份,以获得 10 分钟的验证记录 ID。请参阅 获取验证记录 ID

如何访问 Account API

备注:

为了确保访问令牌具有适当的权限,请确保在 Logto 配置中正确配置了相应的权限 (Scopes)。

例如,对于 POST /api/my-account/primary-email API,你需要配置 email 权限;对于 POST /api/my-account/primary-phone API,你需要配置 phone 权限。

import { type LogtoConfig, UserScope } from '@logto/js';

const config: LogtoConfig = {
// ...其他选项
// 添加适合你的用例的适当权限。
scopes: [
UserScope.Email, // 用于 `{POST,DELETE} /api/my-account/primary-email` API
UserScope.Phone, // 用于 `{POST,DELETE} /api/my-account/primary-phone` API
UserScope.CustomData, // 用于管理自定义数据
UserScope.Address, // 用于管理地址
UserScope.Identities, // 用于身份和 MFA 相关 API
UserScope.Profile, // 用于管理用户资料
UserScope.Sessions, // 用于管理用户会话和应用程序授权
],
};

获取访问令牌

在你的应用程序中设置 SDK 后,你可以使用 client.getAccessToken() 方法获取访问令牌。此令牌是不透明令牌,可用于访问 Account API。

如果你没有使用官方 SDK,你应该在访问令牌授予请求到 /oidc/token 时将 resource 设置为空。

使用访问令牌访问 Account API

在与 Account API 交互时,你应该在 HTTP 头的 Authorization 字段中以 Bearer 格式(Bearer YOUR_TOKEN)包含访问令牌。

以下是获取用户账户信息的示例:

curl https://[tenant-id].logto.app/api/my-account \
-H 'authorization: Bearer <access_token>'

管理基本账户信息

检索用户账户信息

要获取用户数据,你可以使用 GET /api/my-account 端点。

curl https://[tenant-id].logto.app/api/my-account \
-H 'authorization: Bearer <access_token>'

响应体如下:

{
"id": "...",
"username": "...",
"name": "...",
"avatar": "..."
}

响应字段可能会根据账户中心设置而有所不同。

更新基本账户信息

基本账户信息包括用户名、姓名、头像、自定义数据和其他资料信息。

要更新 用户名、姓名、头像和自定义数据,你可以使用 PATCH /api/my-account 端点。

curl -X PATCH https://[tenant-id].logto.app/api/my-account \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"username":"...","name":"...","avatar":"..."}'

要更新其他资料信息,包括 familyName、givenName、middleName、nickname、profile(个人资料页面 URL)、website、gender、birthdate、zoneinfo、locale 和 address,你可以使用 PATCH /api/my-account/profile 端点。

curl -X PATCH https://[tenant-id].logto.app/api/my-account/profile \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"familyName":"...","givenName":"..."}'

管理标识符和其他敏感信息

出于安全原因,Account API 需要对涉及标识符和其他敏感信息的操作进行额外的授权 (Authorization) 层。

获取验证记录 ID

首先,你需要获取一个具有 10 分钟过期时间(TTL)的 验证记录 ID。这可以用于在更新敏感信息之前验证用户的身份。这意味着一旦用户通过密码、电子邮件验证码或短信验证码成功验证其身份,他们就有 10 分钟的时间来更新与认证 (Authentication) 相关的数据,包括标识符、凭据、社交账户链接和 MFA。

要获取验证记录 ID,你可以 验证用户的密码向用户的电子邮件或电话发送验证码

验证用户的密码

curl -X POST https://[tenant-id].logto.app/api/verifications/password \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"password":"..."}'

响应体如下:

{
"verificationRecordId": "...",
"expiresAt": "..."
}

通过向用户的电子邮件或电话发送验证码进行验证

备注:

要使用此方法,你需要 配置电子邮件连接器SMS 连接器,并确保配置了 UserPermissionValidation 模板。

以电子邮件为例,请求一个新的验证码并获取验证记录 ID:

curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."}}'

响应体如下:

{
"verificationRecordId": "...",
"expiresAt": "..."
}

收到验证码后,你可以使用它来更新验证记录的验证状态。

curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."},"verificationId":"...","code":"123456"}'

在验证代码后,你现在可以使用验证记录 ID 来更新用户的标识符。

要了解更多关于验证的信息,请参阅 通过 Account API 进行安全验证

发送带有验证记录 ID 的请求

在发送请求以更新用户的标识符时,你需要在请求头中包含验证记录 ID,并使用 logto-verification-id 字段。

更新用户密码

要更新用户密码,你可以使用 POST /api/my-account/password 端点。

curl -X POST https://[tenant-id].logto.app/api/my-account/password \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"password":"..."}'
提示:

与注册时创建的密码一样,通过 Account API 设置的密码必须符合你在 控制台 > 安全 > 密码策略 中配置的 密码策略。如果密码不符合策略,Logto 将返回详细的验证结果和错误消息。

备注:

要使用此方法,你需要 配置电子邮件连接器,并确保配置了 BindNewIdentifier 模板。

要更新或链接新的电子邮件,你首先需要证明对该电子邮件的所有权。

调用 POST /api/verifications/verification-code 端点请求验证码。

curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."}}'

你将在响应中找到一个 verificationId,并在电子邮件中收到验证码,使用它来验证电子邮件。

curl -X POST https://[tenant-id].logto.app/api/verifications/verification-code/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"identifier":{"type":"email","value":"..."},"verificationId":"...","code":"..."}'

在验证代码后,你现在可以调用 PATCH /api/my-account/primary-email 来更新用户的电子邮件,将 verificationId 设置为请求体中的 newIdentifierVerificationRecordId

两个不同的验证记录 ID:

此请求需要两个单独的验证记录 ID:

  • logto-verification-id(头部):在进行敏感更改之前证明用户的身份。通过 验证用户的密码向用户的现有电子邮件或电话发送验证码 获取。
  • newIdentifierVerificationRecordId(主体):证明新电子邮件地址的所有权。这是从上面的 POST /api/verifications/verification-code 调用返回的 verificationRecordId
curl -X POST https://[tenant-id].logto.app/api/my-account/primary-email \
-H 'authorization: Bearer <access_token>' \
# 验证用户身份(通过密码或现有电子邮件/电话验证)
-H 'logto-verification-id: <verification_record_id_from_existing_identifier>' \
-H 'content-type: application/json' \
# "newIdentifierVerificationRecordId" 证明新电子邮件的所有权(来自上面的验证码流程)
--data-raw '{"email":"...","newIdentifierVerificationRecordId":"<verification_record_id_from_new_email>"}'
提示:

与注册时收集的电子邮件一样,通过 Account API 链接的任何电子邮件必须通过你在 控制台 > 安全 > 阻止列表 中配置的 阻止列表 验证。如果电子邮件违反策略,Logto 将拒绝请求并返回详细错误。

删除用户的电子邮件

要删除用户的电子邮件,你可以使用 DELETE /api/my-account/primary-email 端点。

curl -X DELETE https://[tenant-id].logto.app/api/my-account/primary-email \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>'

管理电话

备注:

要使用此方法,你需要 配置 SMS 连接器,并确保配置了 BindNewIdentifier 模板。

类似于更新电子邮件,你可以使用 PATCH /api/my-account/primary-phone 端点更新或链接新的电话。并使用 DELETE /api/my-account/primary-phone 端点删除用户的电话。

要链接新的社交连接,首先你应该使用 POST /api/verifications/social 请求授权 URL。

curl -X POST https://[tenant-id].logto.app/api/verifications/social \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"connectorId":"...","redirectUri":"...","state":"..."}'
  • connectorId社交连接器的 ID。
  • redirectUri:用户授权应用程序后的重定向 URI,你应该在此 URL 上托管一个网页并捕获回调。
  • state:用户授权应用程序后返回的状态,它是一个用于防止 CSRF 攻击的随机字符串。

在响应中,你会找到一个 verificationRecordId,请保留以备后用。

在用户授权应用程序后,你将在 redirectUri 上收到带有 state 参数的回调。然后你可以使用 POST /api/verifications/social/verify 端点验证社交连接。

curl -X POST https://[tenant-id].logto.app/api/verifications/social/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"connectorData":"...","verificationRecordId":"..."}'

connectorData 是用户授权应用程序后社交连接器返回的数据,你需要在回调页面中解析并获取 redirectUri 的查询参数,并将其包装为 JSON 作为 connectorData 字段的值。

最后,你可以使用 POST /api/my-account/identities 端点链接社交连接。

两个不同的验证记录 ID:

此请求需要两个单独的验证记录 ID:

curl -X POST https://[tenant-id].logto.app/api/my-account/identities \
-H 'authorization: Bearer <access_token>' \
# 验证用户身份(通过密码或现有电子邮件/电话验证)
-H 'logto-verification-id: <verification_record_id_from_existing_identifier>' \
-H 'content-type: application/json' \
# "newIdentifierVerificationRecordId" 标识要链接的社交连接(来自上面的社交验证流程)
--data-raw '{"newIdentifierVerificationRecordId":"<verification_record_id_from_social>"}'

删除社交连接

要删除社交连接,你可以使用 DELETE /api/my-account/identities 端点。

curl -X DELETE https://[tenant-id].logto.app/api/my-account/identities/[connector_target_id] \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>'
备注:

记得先 启用 MFA 和 WebAuthn

备注:

要使用此方法,你需要在 账户中心设置 中启用 mfa 字段。

步骤 1:将你的前端应用程序来源添加到相关来源

WebAuthn 密钥绑定到一个特定的主机名,称为 Relying Party ID (RP ID)。只有托管在 RP ID 来源上的应用程序才能注册或使用这些密钥进行认证。

由于你的前端应用程序从与 Logto 认证页面不同的域调用 Account API,你需要配置 相关来源 以允许跨域密钥操作。

Logto 如何确定 RP ID:

  • 默认设置:如果你只使用 Logto 的默认域 https://[tenant-id].logto.app,则 RP ID 是 [tenant-id].logto.app
  • 自定义域:如果你配置了一个 自定义域,如 https://auth.example.com,则 RP ID 变为 auth.example.com

配置相关来源:

使用 PATCH /api/account-center 端点添加你的前端应用程序的来源。例如,如果你的应用程序的账户中心运行在 https://account.example.com

curl -X PATCH https://[tenant-id].logto.app/api/account-center \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"webauthnRelatedOrigins":["https://account.example.com"]}'
备注:

WebAuthn 支持最多 5 个唯一的 eTLD+1 标签作为相关来源。eTLD+1(有效顶级域加一个标签)是可注册域部分。例如:

  • https://example.comhttps://app.example.comhttps://auth.example.com 计为 一个 标签(example.com
  • https://shopping.comhttps://shopping.co.ukhttps://shopping.co.jp 也计为 一个 标签(shopping
  • https://example.comhttps://another.com 计为 两个 标签

如果你需要支持超过 5 个不同的域作为相关来源,请参阅 相关来源请求 文档以获取详细信息。

步骤 2:请求新的注册选项

使用 POST /api/verifications/web-authn/registration 端点请求注册新的密钥。Logto 允许每个用户账户注册多个密钥。

curl -X POST https://[tenant-id].logto.app/api/verifications/web-authn/registration \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json'

你将收到如下响应:

{
"registrationOptions": "...",
"verificationRecordId": "...",
"expiresAt": "..."
}

步骤 3:在本地浏览器中注册密钥

@simplewebauthn/browser 为例,你可以使用 startRegistration 函数在本地浏览器中注册密钥。

import { startRegistration } from '@simplewebauthn/browser';

// ...
const response = await startRegistration({
optionsJSON: registrationOptions, // 第 1 步中服务器返回的数据
});
// 保存响应以备后用

步骤 4:验证密钥注册

使用 POST /api/verifications/web-authn/registration/verify 端点验证密钥注册。

此步骤验证由认证器生成的加密签名,以确保密钥是合法创建的,并且在传输过程中没有被篡改。

curl -X POST https://[tenant-id].logto.app/api/verifications/web-authn/registration/verify \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json' \
--data-raw '{"payload":"...","verificationRecordId":"..."}'
  • payload:第 2 步中本地浏览器的响应。
  • verificationRecordId:第 1 步中服务器返回的验证记录 ID。

步骤 5:链接密钥

最后,你可以使用 POST /api/my-account/mfa-verifications 端点将密钥链接到用户的账户。

curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"type":"WebAuthn","newIdentifierVerificationRecordId":"..."}'
  • verification_record_id:一个有效的验证记录 ID,通过验证用户的现有因素获得,你可以参考 获取验证记录 ID 部分以获取更多详细信息。
  • type:MFA 因素的类型,目前仅支持 WebAuthn
  • newIdentifierVerificationRecordId:第 1 步中服务器返回的验证记录 ID。

管理现有的 WebAuthn 密钥

要管理现有的 WebAuthn 密钥,你可以使用 GET /api/my-account/mfa-verifications 端点获取当前密钥和其他 MFA 验证因素。

curl https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>'

响应体如下:

[
{
"id": "...",
"type": "WebAuthn",
"name": "...",
"agent": "...",
"createdAt": "...",
"updatedAt": "..."
}
]
  • id:验证的 ID。
  • type:验证的类型,WebAuthn 表示 WebAuthn 密钥。
  • name:密钥的名称,可选字段。
  • agent:密钥的用户代理。

使用 PATCH /api/my-account/mfa-verifications/{verificationId}/name 端点更新密钥名称:

curl -X PATCH https://[tenant-id].logto.app/api/my-account/mfa-verifications/{verificationId}/name \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"name":"..."}'

使用 DELETE /api/my-account/mfa-verifications/{verificationId} 端点删除密钥:

curl -X DELETE https://[tenant-id].logto.app/api/my-account/mfa-verifications/{verificationId} \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>'
备注:

记得先 启用 MFA 和 TOTP

备注:

要使用此方法,你需要在 账户中心设置 中启用 mfa 字段。

步骤 1:生成 TOTP 密钥

使用 POST /api/my-account/mfa-verifications/totp-secret/generate 端点生成 TOTP 密钥。

curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications/totp-secret/generate \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json'

响应体如下:

{
"secret": "..."
}

步骤 2:向用户显示 TOTP 密钥

使用密钥生成二维码或直接显示给用户。用户应将其添加到他们的认证器应用程序(如 Google Authenticator、Microsoft Authenticator 或 Authy)。

二维码的 URI 格式应为:

otpauth://totp/[Issuer]:[Account]?secret=[Secret]&issuer=[Issuer]

示例:

otpauth://totp/YourApp:user@example.com?secret=JBSWY3DPEHPK3PXP&issuer=YourApp

步骤 3:绑定 TOTP 因素

在用户将密钥添加到他们的认证器应用程序后,他们需要验证并将其绑定到他们的账户。使用 POST /api/my-account/mfa-verifications 端点绑定 TOTP 因素。

curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"type":"Totp","secret":"..."}'
  • verification_record_id:一个有效的验证记录 ID,通过验证用户的现有因素获得。你可以参考 获取验证记录 ID 部分以获取更多详细信息。
  • type:必须为 Totp
  • secret:第 1 步中生成的 TOTP 密钥。
备注:

用户一次只能拥有一个 TOTP 因素。如果用户已经有一个 TOTP 因素,尝试添加另一个将导致 422 错误。

管理备份代码

备注:

记得先 启用 MFA 和备份代码

备注:

要使用此方法,你需要在 账户中心设置 中启用 mfa 字段。

步骤 1:生成新的备份代码

使用 POST /api/my-account/mfa-verifications/backup-codes/generate 端点生成一组新的 10 个备份代码。

curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications/backup-codes/generate \
-H 'authorization: Bearer <access_token>' \
-H 'content-type: application/json'

响应体如下:

{
"codes": ["...", "...", "..."]
}

步骤 2:向用户显示备份代码

在将备份代码绑定到用户账户之前,你必须将它们显示给用户,并指示他们:

  • 立即下载或写下这些代码
  • 将它们存储在安全的位置
  • 了解每个代码只能使用一次
  • 知道这些代码是他们失去对主要 MFA 方法的访问权限时的最后手段

你应该以清晰、易于复制的格式显示代码,并考虑提供下载选项(例如,作为文本文件或 PDF)。

步骤 3:将备份代码绑定到用户账户

使用 POST /api/my-account/mfa-verifications 端点将备份代码绑定到用户账户。

curl -X POST https://[tenant-id].logto.app/api/my-account/mfa-verifications \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json' \
--data-raw '{"type":"BackupCode","codes":["...","...","..."]}'
  • verification_record_id:一个有效的验证记录 ID,通过验证用户的现有因素获得。你可以参考 获取验证记录 ID 部分以获取更多详细信息。
  • type:必须为 BackupCode
  • codes:在上一步中生成的备份代码数组。
备注:
  • 用户一次只能拥有一组备份代码。如果所有代码都已使用,用户需要生成并绑定新代码。
  • 备份代码不能是唯一的 MFA 因素。用户必须至少启用一个其他 MFA 因素(如 WebAuthn 或 TOTP)。
  • 每个备份代码只能使用一次。

查看现有备份代码

要查看现有备份代码及其使用状态,请使用 GET /api/my-account/mfa-verifications/backup-codes 端点:

curl https://[tenant-id].logto.app/api/my-account/mfa-verifications/backup-codes \
-H 'authorization: Bearer <access_token>'

响应体如下:

{
"codes": [
{
"code": "...",
"usedAt": null
},
{
"code": "...",
"usedAt": "2024-01-15T10:30:00.000Z"
}
]
}
  • code:备份代码。
  • usedAt:代码使用的时间戳,如果尚未使用则为 null

管理用户会话

列出活动会话

要列出用户的活动会话,你可以使用 GET /api/my-account/sessions 端点。

备注:
  • 需要 UserScope.Sessions 权限才能访问此端点。
  • 账户中心设置中的 Sessions 字段必须设置为 ReadOnlyEdit
curl https://[tenant-id].logto.app/api/my-account/sessions \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'

通过会话 ID 撤销会话

要撤销特定会话,请使用 DELETE /api/my-account/sessions/{sessionId} 端点。

备注:
  • 需要 UserScope.Sessions 权限才能访问此端点。
  • 账户中心设置中的 Sessions 字段必须设置为 Edit
curl -X DELETE https://[tenant-id].logto.app/api/my-account/sessions/{sessionId} \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'

可选查询参数:

  • revokeGrantsTarget:可选地指定要与会话一起撤销的授权目标。可能的值:
    • all:撤销与会话关联的所有授权。
    • firstParty:仅撤销与会话关联的第一方应用程序授权。(推荐用于大多数用例,因为它撤销了你自己的应用程序的访问权限,同时保留了第三方应用程序授权,从而提供更好的用户体验。)
    • 未指定:默认行为是撤销没有 offline_access 权限的授权,这通常意味着撤销会话的非刷新令牌授权。

管理用户授权的应用程序(授权)

当用户需要从其账户设置页面查看和撤销授权的应用程序时,使用用户授权的应用程序(授权)API。

备注:
  • 应用程序授权 API 与会话 API 共享相同的权限模型。
  • 需要 UserScope.Sessions 权限。
  • 账户中心设置中的 Sessions 字段必须启用:
    • ReadOnlyEdit 以列出授权。
    • Edit 以撤销授权。

列出活动应用程序授权

要列出当前用户的活动应用程序授权,请使用 GET /api/my-account/grants 端点。

curl https://[tenant-id].logto.app/api/my-account/grants \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'

可选查询参数:

  • appType=firstParty:仅返回第一方应用程序授权。
  • appType=thirdParty:仅返回第三方应用程序授权。
  • 省略 appType:返回所有活动授权。
curl "https://[tenant-id].logto.app/api/my-account/grants?appType=thirdParty" \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'

通过授权 ID 撤销应用程序授权

要撤销特定应用程序授权,请使用 DELETE /api/my-account/grants/{grantId} 端点。

curl -X DELETE https://[tenant-id].logto.app/api/my-account/grants/{grantId} \
-H 'authorization: Bearer <access_token>' \
-H 'logto-verification-id: <verification_record_id>' \
-H 'content-type: application/json'

当授权被撤销时,先前为该授权颁发的不透明访问令牌和刷新令牌将失效。