2017-12-14 15 views
0

私はAWS Cognitoを未承認ユーザに対して以下のように正常に実装しました。権限のないユーザーの場合、IdentityIdが正常に返されたら、Cognito Syncを使用してデータセットを作成して操作することができます。認定ユーザーとCognito Syncを使用することができませんでした。誰かが、認証されたユーザーのIdentityIdを取得する方法を教えてください。そうすれば、私は、IdentityIdを必要とするレコードをリストすることができます。 IdentityIdは常に未定義として返されます。事前AWS Cognito認証済みユーザとの同期

+1

result.getIdToken().getJwtToken()

すべてを働いているあなたは、セッションを得ています認証されたユーザーのために?このページのユースケース4を見てきましたか:https://github.com/aws/amazon-cognito-identity-js – behrooziAWS

+0

ええ、私は 'cognitoUser.authenticateUser(...)'から返されたJWTを使用しています。 'new CognitoIdentityCredentials(...) 'と一緒に使用するためのJogTをCognitoユーザプールに追加しました。 – hadders

答えて

0

AWS.config.credentials = new CognitoIdentityCredentials({ 
    IdentityPoolId: REACT_APP_AWS_CONFIG_IDENTITY_POOL_ID, 
}); 

const userPool = new CognitoUserPool({ 
    UserPoolId: REACT_APP_AWS_CONFIG_USER_POOL_ID, 
    ClientId: REACT_APP_AWS_CONFIG_CLIENT_ID, 
}); 

let cognitosync = new AWS.CognitoSync(); 

AWS.config.credentials.get(()=>{ 
    IdentityId = AWS.config.credentials.identityId; 
    listRecords(); 
}); 

function listRecords(){ 
    cognitosync.listRecords({ 
     DatasetName  : DATA_SET_NAME, 
     IdentityId  : IdentityId, 
     IdentityPoolId : REACT_APP_AWS_CONFIG_IDENTITY_POOL_ID 
    }, function(error, data) { 
     //... 
    }); 
} 

おかげで、私はあなただけで認証されたユーザーのためにあなたのAWS.config.credentialsオブジェクトにLoginsマップを追加する必要が疑われます。

Loginsマップには、ユーザーがどのように認証されたかによって異なりますが、IDP(IDP)をキーとし、そのIDPから受け取ったIDトークンを値として1つのエントリが必要です。あなたのユーザーがGoogleで認証場合


たとえば、あなたが持っているかもしれません:

googleUser
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', 
    Logins: { 
     'accounts.google.com': googleUser.tokenId 
    } 
}); 

では、Googleによって返されるオブジェクトです。


Cognitoユーザープールで認証ユーザーは、あなたが持っている可能性がある場合

sessionはあなたが CognitoUser.getSession()に提供コールバックに渡され

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx', 
    Logins: { 
     'cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx': 
     session.getIdToken().getJwtToken() 

    } 
}); 

。このユースケースの追加コードコンテキストin this Gist

+0

ご意見ありがとうございます。私は既にCognito User Pool Loginを追加してみましたが、AWSコンソールで設定が間違っているかどうか疑問に思って、そのアプローチを検証する際にあなたの提案を聞いていただきありがとうございます。私はすべてについてちょうど試みたように感じる! – hadders

0

私の問題は何かを発見しました。

result.getAccessToken().getJwtToken()

それがされている必要があります:私が使用していたLoginキー/値のためのJWTを取得するには今

関連する問題