User Pools for Amazon Cognito - CredentialsError: Missing credentials in config
User Pools for Amazon Cognito - CredentialsError: Missing credentials in config
我正在尝试借助 this 教程创建 Web 应用程序身份验证。这是我写的代码 -
var app = {};
app.configureCognito = function(){
AWSCognito.config.region = 'us-east-1';
var poolData = {
UserPoolId: 'userPoolId',
ClientId: 'ClientId'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
UserName:'MyName',
Pool: userPool
};
var attributeList = [];
var dataEmail = {
Name: 'email',
Value: 'mailme@mydomain.com'
};
var dataPhoneNumber = {
Name: 'phone_number',
Value: '+9112212212212'
};
var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);
attributeList.push(attributeEmail);
attributeList.push(attributePhoneNumber);
var cognitoUser;
userPool.signUp('userName','password',attributeList,null,function(err,result){
if(err){
console.log(err);
alert(err);
return;
}
cognitoUser = result.user;
console.log('User Name is: '+cognitoUser);
});
};
我收到错误 "missing credential in config",我知道我们没有在这里做任何 AWSCognito.config.credentials 赋值,但它不应该使用 userPool 对象中提供的信息吗?代码有什么问题吗,缺少什么?根据 UserPoolId 和客户端 ID,两者都是 100% 正确的。任何帮助将不胜感激。
显然我使用下面的代码解决了这个问题,在这个例子中根本不需要提供 IdentityPoolId,这些只是占位符,可以保留如下 -
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '...'
});
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '...'
});
并且凭证 AWS.config.credentials 和 AWSCognito.config.credentials 都需要设置。完成上述步骤后,AWSCognito.config 需要更新如下 -
// Need to provide placeholder keys unless unauthorised user access is enabled for user pool
AWSCognito.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'})
var poolData = {
UserPoolId : 'user pool id collected from user pool',
ClientId : 'application client id of app subscribed to user pool'
};
dataPhoneNumber 和 userData 是可选的,如果需要短信验证注册,则应提供 dataPhoneNumber。
上述问题解决后,Identity-Code 是一个工作模型,如果有人想看一下的话。
我使用 AWS amplify 配置 AWS sdk 和 AWS ses。我有同样的错误,但能够使用以下解决方案克服。我使用了 AWS amplify 和 React js。
希望这对使用 amplify 和 sdk 有问题的人有所帮助。
Auth.currentCredentials().then(res => {
AWS.config.update({
region: 'ap-southeast-1',
credentials: res
});
AWS.config.getCredentials(function (err) {
if (err) console.log(err.stack); // credentials not loaded
else console.log("Access Key:", AWS.config.credentials.accessKeyId);
})
var ses = new AWS.SES({
region: 'ap-south-1',
apiVersion: '2010-12-01'
});
this.setState({
open: false,
ses: ses
});
AWS.config.getCredentials(function (err) {
if (err) console.log(err.stack); // credentials not loaded
else console.log("Access Key:", AWS.config.credentials.accessKeyId);
})
})
我正在尝试借助 this 教程创建 Web 应用程序身份验证。这是我写的代码 -
var app = {};
app.configureCognito = function(){
AWSCognito.config.region = 'us-east-1';
var poolData = {
UserPoolId: 'userPoolId',
ClientId: 'ClientId'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
UserName:'MyName',
Pool: userPool
};
var attributeList = [];
var dataEmail = {
Name: 'email',
Value: 'mailme@mydomain.com'
};
var dataPhoneNumber = {
Name: 'phone_number',
Value: '+9112212212212'
};
var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);
var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);
attributeList.push(attributeEmail);
attributeList.push(attributePhoneNumber);
var cognitoUser;
userPool.signUp('userName','password',attributeList,null,function(err,result){
if(err){
console.log(err);
alert(err);
return;
}
cognitoUser = result.user;
console.log('User Name is: '+cognitoUser);
});
};
我收到错误 "missing credential in config",我知道我们没有在这里做任何 AWSCognito.config.credentials 赋值,但它不应该使用 userPool 对象中提供的信息吗?代码有什么问题吗,缺少什么?根据 UserPoolId 和客户端 ID,两者都是 100% 正确的。任何帮助将不胜感激。
显然我使用下面的代码解决了这个问题,在这个例子中根本不需要提供 IdentityPoolId,这些只是占位符,可以保留如下 -
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '...'
});
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: '...'
});
并且凭证 AWS.config.credentials 和 AWSCognito.config.credentials 都需要设置。完成上述步骤后,AWSCognito.config 需要更新如下 -
// Need to provide placeholder keys unless unauthorised user access is enabled for user pool
AWSCognito.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'})
var poolData = {
UserPoolId : 'user pool id collected from user pool',
ClientId : 'application client id of app subscribed to user pool'
};
dataPhoneNumber 和 userData 是可选的,如果需要短信验证注册,则应提供 dataPhoneNumber。
上述问题解决后,Identity-Code 是一个工作模型,如果有人想看一下的话。
我使用 AWS amplify 配置 AWS sdk 和 AWS ses。我有同样的错误,但能够使用以下解决方案克服。我使用了 AWS amplify 和 React js。
希望这对使用 amplify 和 sdk 有问题的人有所帮助。
Auth.currentCredentials().then(res => {
AWS.config.update({
region: 'ap-southeast-1',
credentials: res
});
AWS.config.getCredentials(function (err) {
if (err) console.log(err.stack); // credentials not loaded
else console.log("Access Key:", AWS.config.credentials.accessKeyId);
})
var ses = new AWS.SES({
region: 'ap-south-1',
apiVersion: '2010-12-01'
});
this.setState({
open: false,
ses: ses
});
AWS.config.getCredentials(function (err) {
if (err) console.log(err.stack); // credentials not loaded
else console.log("Access Key:", AWS.config.credentials.accessKeyId);
})
})