1

AWSを使用してWebアプリケーションを作成しています。私はDynamoDBテーブルからアイテムを取得しようとしていますが、「この認証プールでは認証されていないアクセスはサポートされていません」というエラーが表示されます。私のアプリに認証されていないユーザーがいないようにしたいのですが、DynamoDBクエリを呼び出す前にログインしています。誰でも私を助けることができますか?ここに私のコード:まだログインしていませんが、「この認証プールでは認証されていないアクセスはサポートされていません」

function facebookLogin() { 

FB.login(function (response) { 
    if (response.authResponse) { // logged in 
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
     IdentityPoolId: 'myActualPoolId' 
    }); 

    AWS.config.region = 'us-east-1'; 
    AWS.config.credentials.params.logins = {} 
    AWS.config.credentials.params.logins['graph.facebook.com'] = response.authResponse.accessToken; 
    AWS.config.credentials.expired = true; 



    console.log("Importing drivers into DynamoDB. Please wait."); 


    var drivers = JSON.parse('[{"userId": "4","driverId": "4d","ratingValue": 3,"truckId": "4"},{"userId": "5","driverId": "5d","ratingValue": 2,"truckId": "5"}]'); 
    drivers.forEach(function(driver) { 
     var params = { 
      TableName: "myActualTableName", 
      Item: { 
       "userId": driver.year, 
       "driverId": driver.title, 
       "ratingValue": driver.info, 
       "truckId": driver.truckId 
      } 
     }; 

     var docClient = new AWS.DynamoDB.DocumentClient(); 
     docClient.put(params, function(err, data) { 
      if (err) { 
       console.error("Unable to add driver", driver.userId, ". Error JSON:", JSON.stringify(err, null, 2)); 
      } else { 
       console.log("PutItem succeeded:", driver.userId); 
      } 
     }); 
    }); 

    } else { 
    console.log('There was a problem logging you in.'); 
    } 
    }); 
} 

私は助けていただきありがとうございます。ありがとう!

答えて

2

あなたはとても近くです。 Cognitoの資格プロバイダは遅延を取得するため、ログインを設定している間は、ログインをIDにリンクする必要はありません。そのため、Dynamoへの呼び出しには認証されていないIDが発生しています。 Cognito dev guideはこれを行う方法の具体的な例を持って、関連する1は以下の通りです:

FB.login(function (response) { 

// Check if the user logged in successfully. 
if (response.authResponse) { 

console.log('You are now logged in.'); 

// Add the Facebook access token to the Cognito credentials login map. 
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'IDENTITY_POOL_ID', 
    Logins: { 
    'graph.facebook.com': response.authResponse.accessToken 
    } 
}); 

// Obtain AWS credentials 
AWS.config.credentials.get(function(){ 
    // Access AWS resources here. 
}); 

} else { 
    console.log('There was a problem logging you in.'); 
} 

}); 
+0

パーフェクト!ありがとう! –

関連する問題