【问题标题】:AWS Cognito Identity JS: Forget/Remember/Do Not Remember DeviceAWS Cognito Identity JS:忘记/记住/不记住设备
【发布时间】:2017-12-01 05:00:44
【问题描述】:

我正在使用 AWS Cognito Identity JS SDK (https://github.com/aws/amazon-cognito-identity-js),我正在尝试设置一些按钮来测试 setDeviceStatusRememberedsetDeviceStatusNotRememberedforgetDevice 功能,但我不断收到错误提示:

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() 调用失败。

我想弄清楚的是,我应该只在登录时调用setDeviceStatusRememberedsetDeviceStatusNotRememberedforgetDevice 函数,还是应该能够在我的应用程序中随时调用它们?希望这是有道理的。任何帮助将不胜感激。谢谢!

【问题讨论】:

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


    【解决方案1】:

    这有帮助吗:

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

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

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

    【讨论】:

    • 你太棒了!调用 getCachedDeviceKeyAndPassword 有效!非常感谢!
    • 我也面临类似的问题。我注册创建新帐户,从客户端启用 MFA。我注销。我使用新创建的帐户再次登录。我面临选择 MFA 类型来填写身份验证代码的挑战(来自谷歌身份验证器应用程序或短信)。我还选择“记住我”选项并登录。但是,当我再次登录时,它会再次要求输入身份验证码,并且仅在第二次登录 aws cognito “记住”字段被更新以记住之后。我在登录后使用 setDeviceStatusRemembered() 来记住设备。你能帮忙解决这个问题吗?
    猜你喜欢
    • 2022-08-13
    • 1970-01-01
    • 2020-09-13
    • 2018-02-22
    • 1970-01-01
    • 2021-07-09
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多