AWS Cognito Identity JS:Forget/Remember/Do 不记得设备
AWS Cognito Identity JS: Forget/Remember/Do Not Remember Device
我正在使用 AWS Cognito Identity JS SDK (https://github.com/aws/amazon-cognito-identity-js),我正在尝试设置一些按钮来测试 setDeviceStatusRemembered
、setDeviceStatusNotRemembered
和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
和 forgetDevice
函数,还是应该能够调用他们在我的应用程序中的任何时间?希望这是有道理的。任何帮助将不胜感激。谢谢!
这有帮助吗:
请注意,如果为用户池启用了设备跟踪且设置需要用户选择加入,则您需要实施 onSuccess(result, userConfirmationNecessary) 回调、收集用户输入并调用 setDeviceStatusRemembered 以记住device 或 setDeviceStatusNotRemembered 不记住设备。
您还可以尝试调用 getCachedDeviceKeyAndPassword 来填充 CognitoUser 对象中的 deviceKey 吗?
我正在使用 AWS Cognito Identity JS SDK (https://github.com/aws/amazon-cognito-identity-js),我正在尝试设置一些按钮来测试 setDeviceStatusRemembered
、setDeviceStatusNotRemembered
和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
和 forgetDevice
函数,还是应该能够调用他们在我的应用程序中的任何时间?希望这是有道理的。任何帮助将不胜感激。谢谢!
这有帮助吗:
请注意,如果为用户池启用了设备跟踪且设置需要用户选择加入,则您需要实施 onSuccess(result, userConfirmationNecessary) 回调、收集用户输入并调用 setDeviceStatusRemembered 以记住device 或 setDeviceStatusNotRemembered 不记住设备。
您还可以尝试调用 getCachedDeviceKeyAndPassword 来填充 CognitoUser 对象中的 deviceKey 吗?