구현 코드
//카카오로그인 function kakaoLogin() { //로그인 요청(회원가입) Kakao.Auth.login({ success: function (response) { //회원 정보 가져오기 Kakao.API.request({ url: '/v2/user/me', success: function (response) { $.ajax({ url:'/user/kakaoLogin', type: 'post', data: { 'user_name' : response.properties.nickname, 'user_id' : response.id, 'user_birthday' : response.kakao_account.birthday }, success: function(result){ console.log(result); window.location.href='/'; } }); }, fail: function (error) { console.log(error); }, }) .then(function (response) { console.log(response); }) }, fail: function (error) { console.log(error); }, }) } //로그아웃 function Logout() { if (!Kakao.Auth.getAccessToken()) { alert('로그아웃 하였습니다.'); window.location.href='/user/logout'; } Kakao.Auth.logout(function (response) { alert('로그아웃 하였습니다.'); window.location.href = '/user/logout'; }); }; //카카오연결 끊기 및 회원 탈퇴 $("#delete").click(function(){ if(confirm("정말 삭제하시겠습니까?")){ Kakao.API.request({ url: '/v1/user/unlink', }) $("#register").attr({ 'method' : 'post', 'action' : '/user/delete' }); $("#register").submit(); } });
Setting
SDK 다운링크에서 다운
- SDK를 초기화하는 과정
Code
<script src="https://t1.kakaocdn.net/kakao_js_sdk/2.1.0/kakao.min.js" integrity="sha384-dpu02ieKC6NUeKFoGMOKz6102CLEWi9+5RQjWSV0ikYSFFd8M3Wp2reIcquJOemx" crossorigin="anonymous"></script> <script src="https://developers.kakao.com/sdk/js/kakao.js"></script> <script> Kakao.init('${key}'); //발급받은 키 중 javascript키를 사용해준다. console.log(Kakao.isInitialized()); // sdk초기화여부판단 </script>
logIn
Kakao.Auth.login() 메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- 속성값
function kakaoLogin(){ Kakao.Auth.login({ '속성값들 삽입' }); };
- scope(String) : 사용자가 동의하지 않은 사항에 대한 추가요청(기존에 동의항목에 있어야함)
function kakaoLogin(){ Kakao.Auth.login({ redirectUri: '', scope: 'account_email, gender' }); };
- throughTalk(Boolean) : 간편 로그인 사용 여부(default → true)
- prompts(String) : 카카오톡에서 자동 로그인, 기존 로그인 여부와 상관없이 로그인 요청
- login → 무조건 로그인상황 진행(비밀번호, 패스워드 입력)
- none → 인가 코드 발급을 요청할 때 사용(자동 로그인)
function kakaoLogin(){ Kakao.Auth.login({ redirectUri: '', prompts: 'none' }); };
- serviceTerms(String) : 약관 선택해 동의 받기 요청시 사용
- 카카오 싱크 전용
- state(String) : Cross-Site Request Forgery 공격으로 부터 보호하기 위해 사용
- nonce(String) : OpenID Connect를 통해 ID토큰을 함께 발급받을 경우 공격방지하기 위해 사용
- scope(String) : 사용자가 동의하지 않은 사항에 대한 추가요청(기존에 동의항목에 있어야함)
- Kakao.Auth.authorize() → 현재창에서 로그인
Token
토큰의 종류
- 액세스 토큰(Access token)
→ 사용자 정보 가져오기를 호출해 회원가입 및 로그인에 필요한 사용자 정보를 요청할 수 있음
→ 서비스 클라이언트로 전달해 토큰 할당시 서비스 클라이언트에서도 SDK를 통한 API요청에 사용 가능
- 리프레시 토큰(Refresh token)
- ID 토큰(ID token)
→ OpenID Connect 사용시에만 발급
토큰 할당하기
- setAccessToken()
Kakao.Auth.setAccessToken('${ACCESS_TOKEN}');
LogOut
Kakao.Auth.logout( )메서드를 사용
- 함수를 호출하면 사용자의 엑세스 토큰이 만료됨
- Kakao.Auth.logout( ) 은 Promise를 반환
- 서비스의 로그아웃은 직접 구현해야 함
- 토큰을 만료시키지만, 카카오계정의 로그아웃이나 서비스의 로그아웃에 영향을 주지 않음
function kakaoLogout(){
Kakao.Auth.logout()
.then(function(response){ //정상 응답시 처리
console.log(Kakao.Auth.getAccessToken()); // 출력결과 : null
)};
.catch(function(error){ //오류 발생시 처리
console.log('Not logged in');
)};
};
Unlink
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v1/user/unlink
- Kakao.API.request( )는 Promise를 반환
function KakaoDelete(){
Kakao.API.request({
url: '/v1/user/unlink',
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
}
사용자 정보 가져오기
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v2/user/me
- data(Object) → API에 전달할 parameter
- property_keys ( String[ ] )
- 가져오려는 데이터명
- property_keys ( String[ ] )
Kakao.API.request({
url: '/v2/user/me',
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
Kakao.API.request({
url: '/v2/user/me',
data: { //가져오려는 데이터 선택
property_keys: ['kakao_account.email', 'kakao_account.gender'],
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
사용자 정보 저장하기
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v1/user/update_profile
- data(Object) → API에 전달할 parameter
- properties( Object )
- 사용자 프로퍼티에 정보를 추가
- ex) {’${CUSTOM_PROPERTY_KEY}’ : ‘${CUSTOM_PROPERTY_VALUE}’}
- properties( Object )
배송지 가져오기
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v1/user/shipping_address
- data(Object) → API에 전달할 parameter
- address_id ( NUMBER )
- 배송지 정보가 많은 경우, 특정 배송지 정보만 얻고 싶을 때 배송지 ID 지정
- from_updated_at ( NUMBER )
- 여러 페이지에 걸쳐 응답이 제공될 때, 기준이 되는 배송지 updated_at 시각
- 해당 시각(미포함) 이전에 수정된 배송지부터 조회
- 이전 페이지의 마지막 배송지의 updated_at을 다음 페이지 input으로 사용
- 값을 0으로 전달하면 처음부터 조회
- page_size ( NUMBER )
- 2이상, 한 페이지에 포함할 배송지 개수(default : 10)
- address_id ( NUMBER )
Kakao.API.request({
url: '/v1/user/shipping_address',
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
Kakao.API.request({
url: '/v1/user/shipping_address',
data: { //특정 배송지 정보만 요청
address_id : ${ADDRESS_ID),
}
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
동의내역 확인하기
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v2/user/scopes
- data(Object) → API에 전달할 parameter
- scopes( String[] )
- 특정 동의 항목에 대한 상세 정보만 불러오려는 경우 사용하는 동의 항목의 ID목록
- 동의항목 ID는 [내 애플리케이션] → [카카오 로그인] → [동의 항목] 참고
- scopes( String[] )
Kakao.API.request({
url: '/v2/user/scopes',
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
Kakao.API.request({
url: '/v2/user/scopes',
data: { //특정 항목만 확인하기
scopes: ['account_email', 'gender'],
}
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
동의 철회하기
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v2/user/revoke/scopes
- data(Object) → API에 전달할 parameter
- scopes( String[] )
- 동의를 철회할 항목의 ID목록
- 동의 내역 확인하기 API응답에서 true인 항목만 철회 가능
- 동의항목 ID는 [내 애플리케이션] → [카카오 로그인] → [동의 항목] 참고
- scopes( String[] )
Kakao.API.request({
url: '/v2/user/revokde/scopes',
data: { //특정 항목 선택
scopes: ['account_email', 'gender'],
}
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
동의한 약관 확인하기
- 카카오 싱크 전용
Kakao.API.request( )메서드를 사용
- { }의 속상값은 parameter를 JSON형식으로 전달하는 것
- url → /v1/user/service/terms
- data(Object) → API에 전달할 parameter
- extra( String )
- 추가 동작을 요청하는 parameter
- extra( String )
Kakao.API.request({
url: '/v1/user/service/terms',
});
.then(function(response){ //정상 응답시 처리
console.log(response);
};
.catch(function(error){ //오류 발생시 처리
console.log(error);
};
Uploaded by N2T
728x90
반응형
댓글