2016-10-05 29 views
2

認証直後にユーザーの属性を更新しようとしています。 Authは正常に機能し、ユーザー属性を取得できます。 しかし、問題はvar cognitoUser = getUserPool().getCurrentUser();がnullを返します。現在のユーザーを取得して、属性を更新することはできますが、ブラウザを更新することはできません。AWS Cognito getCurrentUser()をリフレッシュしないで認証した後

もう1つの質問は、ブラウザを更新せずに現在のユーザー上で関数を実行するために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(); 

。認証に成功すると、クライアントIDでキーされたユーザーをローカルストレージに保存します。 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(); 
関連する問題