- 브라우저용 / node.js 용으로 구분하여 사용할 수 있는데, 여기서는 브라우저용을 사용한다.
주의: 현재 IE 10+ 이상을 지원하므로, 테스트 용도로는 브라우저 세팅을 사용했으나 추후 node.js로 바꿔서 node.js API를 호출해서 사용해야 할 것으로 예상
- SDK를 이 리파지토리에서 다운받는다
/dist/aws-cognito-sdk.min.js
와/dist/amazon-cognito-identity.min.js
를 다운.- 전체 sdk가 필요하다면
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.146.0.min.js"></script>
를 추가하면 된다. 여기서는 cognito만 사용할 것이므로 스킵.
원하는 페이지에 스크립트를 추가한다
12<script src="/js/aws-cognito-sdk.min.js"></script><script src="/js/amazon-cognito-identity.min.js"></script>기본 유저 풀 오브젝트 생성
12345678910AWSCognito.config.region = 'ap-northeast-2';var poolData = {UserPoolId : '유저 풀 ID',ClientId : '앱 ID'};var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);var userData = {Username : '사용자 이메일',Pool : userPool};
================= 여기까지가 세팅 ====================
사용자 가입 시키기
123456789101112131415161718192021222324252627var attributeList = [];var dataName = {Name : 'name', // 키Value : 'JiwonTest' // 값};var dataEmail = {Name : 'email',Value : 'test@test.com'};var dataPhoneNumber = {Name : 'phone_number',Value : '+15555555555'};var attributeName = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataName);var attributeEmail = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataEmail);var attributePhoneNumber = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserAttribute(dataPhoneNumber);attributeList.push(attributeName);attributeList.push(attributeEmail);attributeList.push(attributePhoneNumber);userPool.signUp('유저네임', '패스워드', attributeList, null, function(err, result){if (err) {alert(err);return;}cognitoUser = result.user;// 이 cognitoUser를 이용해서 패스워드 수정, 유저 데이터 불러오기 등을 할 수 있음});사용자 인증(로그인)
12345678910111213141516171819202122var authenticationData = {Username : '유저네임',Password : '패스워드',};var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);var userData = {Username : '유저네임',Pool : userPool};var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);var accessToken;cognitoUser.authenticateUser(authenticationDetails, {onSuccess: function (result) {console.log('access token + ' + result.getAccessToken().getJwtToken());accessToken = result.getAccessToken().getJwtToken();console.log('idToken + ' + result.idToken.jwtToken);},onFailure: function(err) {console.log(err);},});현재 세션 확인
12345678910var cognitoUser = userPool.getCurrentUser();if (cognitoUser != null) {cognitoUser.getSession(function(err, session) {if (err) {alert(err);return;}console.log('session validity: ' + session.isValid());});}현 유저의 정보 받아오기
123456cognitoUser.getUserAttributes(function(err, result) {if (err) {console.log(err);return;}console.log('result: '+ result);로그아웃
1234if (cognitoUser != null) {cognito User.signOut();console.log('sign out');}유저 삭제
1234567cognitoUser.deleteUser(function(err, result) {if (err) {console.log(err);return;}console.log('call result: ' + result);});패스워드 수정
1234567cognitoUser.changePassword('예전 패스워드', '새 패스워드', function(err, result) {if (err) {alert(err);return;}console.log('call result: ' + result);});