AWS Cognito Identity JS:忘记/记住/不记得设备

时间:2017-06-28 01:08:29

标签: javascript amazon-web-services amazon-cognito aws-cognito

我正在使用AWS Cognito Identity JS SDK(https://github.com/aws/amazon-cognito-identity-js),我正在尝试设置几个按钮来测试setDeviceStatusRememberedsetDeviceStatusNotRemembered和{{ 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()setDeviceStatusRememberedsetDeviceStatusNotRemembered函数,还是应该可以调用它们我的申请时间?希望这是有道理的。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

这有用吗:

请注意,如果为用户池启用了设备跟踪,并且设置需要用户选择加入,则需要实现onSuccess(result,userConfirmationNecessary)回调,收集用户输入并调用setDeviceStatusRemembered以记住设备或setDeviceStatusNotRemembered不记得设备。

http://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-device-tracking.html

您也可以尝试调用getCachedDeviceKeyAndPassword来填充CognitoUser对象中的deviceKey吗?