gpt4 book ai didi

javascript - AWS Cognito 与授权用户同步

转载 作者:行者123 更新时间:2023-11-28 03:52:57 24 4
gpt4 key购买 nike

我已为未经授权的用户成功实现了 AWS Cognito,如下所示。对于未经授权的用户,一旦成功返回 IdentityId,我就可以使用 Cognito Sync 成功创建和操作数据集。我无法与授权用户一起使用 Cognito Sync。请有人告诉我如何获取授权用户的 IdentityId,然后允许我列出记录(这需要 IdentityId)。 IdentityId 始终返回为未定义。

AWS.config.credentials = new CognitoIdentityCredentials({
IdentityPoolId: REACT_APP_AWS_CONFIG_IDENTITY_POOL_ID,
});

const userPool = new CognitoUserPool({
UserPoolId: REACT_APP_AWS_CONFIG_USER_POOL_ID,
ClientId: REACT_APP_AWS_CONFIG_CLIENT_ID,
});

let cognitosync = new AWS.CognitoSync();

AWS.config.credentials.get(()=>{
IdentityId = AWS.config.credentials.identityId;
listRecords();
});

function listRecords(){
cognitosync.listRecords({
DatasetName : DATA_SET_NAME,
IdentityId : IdentityId,
IdentityPoolId : REACT_APP_AWS_CONFIG_IDENTITY_POOL_ID
}, function(error, data) {
//...
});
}

提前致谢

最佳答案

我怀疑您只需要为经过身份验证的用户添加一个 Logins 映射到您的 AWS.config.credentials 对象。

您在 Logins 映射中放置的内容取决于用户的身份验证方式,但本质上您需要一个条目,其中身份提供商 (IDP) 作为 key ,以及您从其收到的 id token IDP 作为值。

<小时/>

例如,如果您的用户通过 Google 进行了身份验证,您可能会:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx',
Logins: {
'accounts.google.com': googleUser.tokenId
}
});

其中 googleUser 是 Google 返回的对象。

<小时/>

如果您的用户通过 Cognito 用户池进行身份验证,您可能会:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx',
Logins: {
'cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx':
session.getIdToken().getJwtToken()

}
});

其中 session 被传递给您提供给 CognitoUser.getSession() 的回调。此用例的附加代码上下文 in this Gist .

关于javascript - AWS Cognito 与授权用户同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47816252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com