2016-10-05 92 views
2

我試圖在認證後立即更新用戶屬性。 身份驗證工作正常,我可以用它檢索用戶屬性。 但問題是var cognitoUser = getUserPool().getCurrentUser();返回null。如何檢索當前用戶,以便我能夠更新屬性,但不刷新瀏覽器?AWS Cognito getCurrentUser()認證後不刷新

也許另一個問題是,如何在不刷新瀏覽器的情況下使用accessToken在當前用戶上運行功能?

var cognitoUser = getUserPool().getCurrentUser(); 
    if (cognitoUser != null) { 
    cognitoUser.getSession(function(err, session) { 
     if (err) { 
     console.log(err); 
     return; 
     }else if(session.isValid()){ 
     updateUserAttribute(cognitoUser, 'custom:attr', attr) 
     } 
    }); 

    }else{ 
    console.log('Cognito User is null'); 
    return; 
    } 

回答

0
var cognitoUser = getUserPool().getCurrentUser(); 

應該返回的最後一個身份驗證的用戶,如果用戶池正確初始化。驗證成功後,我們將用戶標識上的用戶保存到本地存儲。每次調用getCurrentUser時,它都會從本地存儲中檢索特定的最後一個已認證的用戶。令牌在該用戶和客戶端ID上鍵入。驗證成功後,它們也會保存到本地存儲。訪問訪問令牌應該只是:

cognitoUser.getSignInUserSession().getAccessToken().getJwtToken()) 

,您可以直接與客戶CognitoIdentityServiceProvider公開的操作使用令牌。

0

這是一個相當古老的問題,所以您現在可能已經移動了,但我認爲您需要使用您的userpoolId和clientID創建用戶池。我不認爲你可以調用getUserPool()而不知道那些已知和/或以某種方式可用的內存。例如:

function makeUserPool() { 
    var poolData = { 
     UserPoolId : "your user pool id here", 
     ClientId : "you client id here" 
    }; 
    return new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 
} 
var userPool = makeUserPool(); 
var currAWSUser = userPool.getCurrentUser();