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工作!非常感謝! –