简体   繁体   English

如何删除 Node.js 中的 Cognito 用户?

[英]How to delete the Cognito user in Node.js?

How to delete user account from * cognito * in nodejs.如何在 nodejs 中从 * cognito * 中删除用户帐户。

I'm trying to delete the user from cognito it is not working for me.我正在尝试从cognito中删除用户,但它对我不起作用。

AWS config AWS 配置

const AWS = require('aws-sdk'); const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();

Pool config池配置

const poolConfig = { UserPoolId: keys.cognito.userPoolId, ClientId: keys.cognito.clientId };

Above configurations comes on top of below delete function.上面的配置是在下面删除 function 之上的。

Delete Function删除 Function

function deleteUserFunc(req, decodedToken) {
    return new Promise((resolve, reject) => {
        const decodedEmailid = decodedToken.email;
        const decodedSub = decodedToken.sub;
        try {
                const userDetails = { Username: decodedSub, Pool: userPool };
                console.log('DEBUG : ' + JSON.stringify(userDetails));
                const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userDetails);

                // Attempting to delete the user

                cognitoidentityserviceprovider.adminDeleteUser({
                    UserPoolId: keys.cognito.userPoolId,
                    Username: decodedEmailid
                    }, (err, data)=>                              
                        if(err) {
                        return reject({
                            error: err.message
                        });
                        } else {
                        return resolve({
                            error: null
                        });
                        }
                    }).promise().catch(err=>{
                    return reject({
                        error: err.message
                    });
                    });

                console.log('User deleteion status : ' + result);

                return resolve({
                    error: null,
                });
            });
        } catch (err) {
            return reject({
                error: err,
            });
        }
    });
}

I have also tried to delete the user with const userDetails = { Username: decodedEmailId, Pool: userPool } but no use.我还尝试使用const userDetails = { Username: decodedEmailId, Pool: userPool }删除用户,但没有用。

Any help will much appreciated.任何帮助将不胜感激。

Try this:尝试这个:

const AWS = require('aws-sdk');
AWS.config.update({
  accessKeyId: 'access key id',
  secretAccessKey: 'secret access key',
  region: 'region',
});
const cognito = new AWS.CognitoIdentityServiceProvider();

await cognito.adminDeleteUser({
  UserPoolId: 'pool id',
  Username: 'username',
}).promise();

Note that the access token you're using within sdk should have cognito-idp:AdminDeleteUser permission on required pool.请注意,您在 sdk 中使用的访问令牌应该对所需池具有cognito-idp:AdminDeleteUser权限。

The original answer by @Vladyslav Usenko helped me implement this newer version using the latest aws libraries. @Vladyslav Usenko 的原始答案帮助我使用最新的 aws 库实现了这个较新的版本。

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-cognito-identity-provider/index.html https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-cognito-identity-provider/index.html

The documentation by AWS is very generic and difficult to figure out a solution, but here's an example that should help others. AWS 的文档非常通用,很难找出解决方案,但这里有一个示例,应该可以帮助其他人。

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

const client = new CognitoIdentityProviderClient({ region: 'region-goes-here' });

var adminDeleteUserCommandInput = {
    UserPoolId: 'user-pool-here',
    Username: 'user-name-here' 
};
    
const adminDeleteUserCommandResults = await client.send(new AdminDeleteUserCommand(adminDeleteUserCommandInput));
console.log("adminDeleteUserCommandResults", adminDeleteUserCommandResults);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM