dmi*_*eev 6 javascript amazon-web-services aws-sdk aws-sdk-js
因此,我将我的项目迁移到新的 AWS-SDK V3,因为它具有模块化功能。然而,我似乎不知道该使用什么来代替CognitoIdentityCredentials
新的 API。V2 的代码如下所示:
const credentials = new CognitoIdentityCredentials(
{
IdentityPoolId: config.get("IdentityPoolId"),
Storage: config,
Logins: {
[...]: idToken,
},
},
{
region: config.get("awsregion"),
},
);
if (credentials.needsRefresh()) {
...
}
Run Code Online (Sandbox Code Playgroud)
CognitoIdentityCredentials
尝试在 V3 的github repo中查找,但我唯一发现的是该fromCognitoIdentity
函数似乎没有类似的参数。V3 的文档令人困惑并且包含错误并且根本没有帮助。您能否为我提供一个工作流程,该工作流程可以实现与 V2 版本相同的功能,但使用新的 API?
如果我正确理解您的用例,我认为您可以使用该fromCognitoIdentityPool
方法:
const { CognitoIdentityClient, GetIdCommand } = require("@aws-sdk/client-cognito-identity");
const { fromCognitoIdentityPool } = require("@aws-sdk/credential-provider-cognito-identity");
const UserPoolId = "cognito-idp.us-west-2.amazonaws.com/us-west-2_an976DxVk"
const IdentityPoolId = "us-west-2:7y870k8a-12ki-8ik4-84iw-2kdi849sku72"
const jwtIdToken = "eydkslei..." // jwtIdToken cut for brevity
const getCredentials = async () => {
const cognitoidentity = new CognitoIdentityClient({
credentials : fromCognitoIdentityPool({
client : new CognitoIdentityClient(),
identityPoolId : IdentityPoolId,
logins: {
[UserPoolId] : jwtIdToken
}
}),
});
const credentials = await cognitoidentity.config.credentials()
console.log(credentials)
// {
// identityId: 'us-west-2:d393294b-ff23-43t6-d8s5-59876321457d',
// accessKeyId: 'ALALA2RZ7KTS7STD3VXLM',
// secretAccessKey: '/AldkSdt67saAddb6vddRIrs32adQCAo99XM6',
// sessionToken: 'IQoJb3JpZ2luX2VjEJj//////////...', // sessionToken cut for brevity
// expiration: 2022-07-17T08:58:10.000Z
// }
return credentials
}
getCredentials()
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,您可以查看credentials.expiration
以确定是否需要刷新用户凭据。
归档时间: |
|
查看次数: |
1778 次 |
最近记录: |