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

如何删除AWS Cognito中已关联的第三方身份提供商用户账号?

搞定Cognito关联账号的批量删除问题

为啥删了邮箱账号,第三方账号还留着?

用adminLinkProviderForUser关联邮箱密码账号和Google这类第三方IdP账号后,两个账号会共享同一个用户ID,但在Cognito后台可能仍显示为独立条目。直接删除其中一个账号时,关联的第三方账号不会自动同步删除;而AdminDisableProviderForUser仅禁用登录权限,不会删掉账号实体本身。

一步步解决

1. 先获取关联的第三方身份信息

用你之前删除的邮箱账号用户名(或用户唯一ID sub),调用接口获取该用户关联的所有第三方身份详情:

const { AdminGetUserCommand } = require("@aws-sdk/client-cognito-identity-provider");

// 获取用户完整信息
const getUserCmd = new AdminGetUserCommand({
  UserPoolId: poolId,
  Username: "你的邮箱账号用户名" // 若邮箱已删,替换为用户sub值
});
const userInfo = await this.cognito.send(getUserCmd);

// 提取所有关联的第三方身份
const linkedThirdParties = userInfo.UserIdentities || [];

2. 解除两个账号的关联关系

将每个第三方身份与邮箱账号解绑,让它们恢复为独立的账号实体:

const { AdminUnlinkProviderForUserCommand } = require("@aws-sdk/client-cognito-identity-provider");

for (const party of linkedThirdParties) {
  const unlinkCmd = new AdminUnlinkProviderForUserCommand({
    UserPoolId: poolId,
    Username: "你的邮箱账号用户名", // 或用户sub值
    ProviderName: party.ProviderName, // 例如 "Google"
    ProviderUserId: party.ProviderUserId // 第三方平台返回的用户ID
  });
  await this.cognito.send(unlinkCmd);
}

3. 定位并删除第三方账号

解绑完成后,通过第三方平台的用户ID查询对应的Cognito账号,执行删除操作:

const { AdminListUsersCommand, AdminDeleteUserCommand } = require("@aws-sdk/client-cognito-identity-provider");

for (const party of linkedThirdParties) {
  // 根据第三方用户ID筛选目标账号
  const listUsersCmd = new AdminListUsersCommand({
    UserPoolId: poolId,
    Filter: `identities[0].userId = "${party.ProviderUserId}"`
  });
  const { Users } = await this.cognito.send(listUsersCmd);

  // 删除找到的第三方账号
  if (Users.length > 0) {
    const deleteCmd = new AdminDeleteUserCommand({
      UserPoolId: poolId,
      Username: Users[0].Username
    });
    await this.cognito.send(deleteCmd);
  }
}

注意事项

  • 如果邮箱账号已被删除,必须使用用户的sub属性(唯一用户ID)来查询关联信息,不能再用邮箱用户名。
  • AdminListUsers的Filter参数要严格符合Cognito的过滤规则,确保精准匹配到目标第三方账号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:54:25