0

我与AWS Cognito身份JS SDK(https://github.com/aws/amazon-cognito-identity-js)工作,我想建立几个按钮来测试setDeviceStatusRememberedsetDeviceStatusNotRememberedforgetDevice功能,但我不断收到一个错误说:AWS Cognito身份JS:忘记/记住/不要记住设备

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); 
      } 
     }); 
    }); 
    } 
} 

如果我改变了样T功能他:

forgetDevice = function(cognitoUser){ 
    cognitoUser.forgetDevice({ 
     onSuccess: function (result) { 
      console.log('call result: ' + result); 
     }, 
     onFailure: function(err) { 
      alert(err); 
     } 
    }); 
} 

,我打电话从cognitoUser.authenticateUsersuccess回调函数的函数,传递cognitoUser作为参数到forgetDevice功能高于一切完美的作品。

从第一个实现看session对象似乎让cognitoUser.forgetDevice()呼叫失败session对象不包含DeviceKey财产。

我想弄明白的是,我应该只是在登录时调用setDeviceStatusRemembered,setDeviceStatusNotRememberedforgetDevice函数,还是应该可以在我的应用程序中随时调用它们?希望这是有道理的。任何帮助将不胜感激。谢谢!

回答

1

这是否帮助:

注意,如果设备跟踪与该用户选择,在需要进行设置的用户池启用,您需要实现的onSuccess(结果,userConfirmationNecessary)回调,收集用户输入并调用setDeviceStatusRemembered记住设备或setDeviceStatusNotRemembered记住设备。

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

也可以尝试你打电话getCachedDeviceKeyAndPassword来填充CognitoUser对象deviceKey?

+0

你太棒了!调用getCachedDeviceKeyAndPassword工作!非常感谢! –