我正在使用AWS Cognito Identity JS SDK(https://github.com/aws/amazon-cognito-identity-js),我正在尝试设置几个按钮来测试setDeviceStatusRemembered
,setDeviceStatusNotRemembered
和{{ 1}}功能,但我一直收到错误说:
forgetDevice
以下是其中一个功能的实现:
MissingRequiredParameter: Missing required key 'DeviceKey' in params
如果我改变了这样的功能:
forgetDevice = function(){
var cognitoUser = userPool.getCurrentUser();
if (cognitoUser != null) {
cognitoUser.getSession(function(err, session) {
if (err) {
alert(err);
signOut();
return;
}
console.log('session validity: ' + session.isValid());
cognitoUser.forgetDevice({
onSuccess: function (result) {
console.log('call result: ' + result);
},
onFailure: function(err) {
alert(err);
}
});
});
}
}
我从forgetDevice = function(cognitoUser){
cognitoUser.forgetDevice({
onSuccess: function (result) {
console.log('call result: ' + result);
},
onFailure: function(err) {
alert(err);
}
});
}
cognitoUser.authenticateUser
回调函数调用该函数,将success
作为参数传递到cognitoUser
函数上面,所有内容都完美无缺。
通过查看第一个实现中的forgetDevice
对象,似乎session
对象不包含session
属性,因此DeviceKey
调用失败。
我想弄清楚的是,我应该在登录时调用cognitoUser.forgetDevice()
,setDeviceStatusRemembered
和setDeviceStatusNotRemembered
函数,还是应该可以调用它们我的申请时间?希望这是有道理的。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
这有用吗:
请注意,如果为用户池启用了设备跟踪,并且设置需要用户选择加入,则需要实现onSuccess(result,userConfirmationNecessary)回调,收集用户输入并调用setDeviceStatusRemembered以记住设备或setDeviceStatusNotRemembered不记得设备。
您也可以尝试调用getCachedDeviceKeyAndPassword来填充CognitoUser对象中的deviceKey吗?