我正在尝试更新类aws.cognitoidentityserviceprovider的userattributes
使用节点js
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#updateUserAttributes-property
// Set credentials
AWS.config.region = 'us-east-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
});
let CognitoIdentityServiceProvider = AWS.CognitoIdentityServiceProvider();
// Make the call to obtain credentials
AWS.config.credentials.get(function() {
// Credentials will be available when this function is called.
var token = AWS.config.credentials.sessionToken;
var params = {
UserAttributes: [{
Name: 'custom:XXXXXXXX',
Value: 'XXXXXXXX'
}],
AccessToken: token
};
CognitoIdentityServiceProvider.updateUserAttributes(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
return callback(false, err.stack);
}
console.log(data);
callback(true, data);
});
});
答案是:
{[InvalidParameterException:检测到1个验证错误:“AccessToken”处的值未能满足约束:成员必须满足正则表达式模式:[a-za-z0-9-.]+]
消息:“检测到1个验证错误:”“accessToken”“处的值未能满足约束:成员必须满足正则表达式模式:[a-za-z0-9-.]+',
code:'无效参数异常',
时间:2016年6月23日星期四09:50:15 GMT-0500(COT)
请求ID:'CB98C60F-3951-11E6-A4C2-3D6C71F21F4C',
状态码:400,
可重试:错误,
重试延迟:36.788223031908274}
我做错什么了?
最佳答案
cognitoidentityserviceprovider接受的AccessToken
不是aws凭据中的会话令牌。当您使用用户名和密码对用户进行身份验证时,它是cognito用户池服务(身份提供者)提供的tokens之一。
参见this guide了解使用cognito用户池javascript sdk的说明。