Google 공식문서 : https://developers.google.com/identity/protocols/oauth2?hl=ko
Google 사용자 API 참고 문서 : https://blog.itcode.dev/posts/2021/10/23/oauth2-java-server-5
kakao 공식문서 : https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api
❗️Google OAuth 사용자 API 는 못찾아서 다른 블로그 글 보고 정리함
{
"sub": "90234582532742",
"name": "First Last",
"given_name": "First",
"family_name": "Last",
"picture": "<https://lh3.googleusercontent.com/a-/hash>",
"email": "[email protected]",
"email_verified": true,
"locale": "ko"
}
HTTP/1.1 200 OK
{
"id":123456789,
"connected_at": "2022-04-11T01:45:28Z",
"kakao_account": {
// 프로필 또는 닉네임 동의 항목 필요
"profile_nickname_needs_agreement ": false,
// 프로필 또는 프로필 사진 동의 항목 필요
"profile_image_needs_agreement ": false,
"profile": {
// 프로필 또는 닉네임 동의 항목 필요
"nickname": "홍길동",
// 프로필 또는 프로필 사진 동의 항목 필요
"thumbnail_image_url": "<http://yyy.kakao.com/.../img_110x110.jpg>",
"profile_image_url": "<http://yyy.kakao.com/dn/.../img_640x640.jpg>",
"is_default_image":false
},
// 이름 동의 항목 필요
"name_needs_agreement":false,
"name":"홍길동",
// 카카오계정(이메일) 동의 항목 필요
"email_needs_agreement":false,
"is_email_valid": true,
"is_email_verified": true,
"email": "[email protected]",
// 연령대 동의 항목 필요
"age_range_needs_agreement":false,
"age_range":"20~29",
// 출생 연도 동의 항목 필요
"birthyear_needs_agreement": false,
"birthyear": "2002",
// 생일 동의 항목 필요
"birthday_needs_agreement":false,
"birthday":"1130",
"birthday_type":"SOLAR",
// 성별 동의 항목 필요
"gender_needs_agreement":false,
"gender":"female",
// 카카오계정(전화번호) 동의 항목 필요
"phone_number_needs_agreement": false,
"phone_number": "+82 010-1234-5678",
// CI(연계정보) 동의 항목 필요
"ci_needs_agreement": false,
"ci": "${CI}",
"ci_authenticated_at": "2019-03-11T11:25:22Z",
},
"properties":{
"${CUSTOM_PROPERTY_KEY}": "${CUSTOM_PROPERTY_VALUE}",
...
},
"for_partner": {
"uuid": "${UUID}"
}
}
구글 | 카카오 | |
---|---|---|
이름 | O | 동의 시 제공 |
이메일 | O | 동의 시 제공 |
전화번호 | X | 동의 시 제공 |
프로필 URL | O | 동의 시 제공 |
CREATE TABLE member (
id int NOT NULL AUTO_INCREMENT,
oauth_id varchar(255) NOT NULL,
name varchar(50), # oauth 계정의 실제 이름
nickname varchar(50), # 고하이어 닉네임(사용자 별도 설정 필요)
phone_number varchar(50),
email varchar(100),
role varchar(50), # 권한 : GUEST, USER, ADMIN
resource_id int, # 프로필 정보
--- 논의 필요
archived boolean, # 삭제여부
archived_at datetime, # 삭제 일자
created_at datetime, # 생성 일자
updated_at datetime, # 수정 일자
CONSTRAINT member_PK PRIMARY KEY(id)
);
# Refresh Token : 사용자 아이디, 토큰, 생성일자, 만료일자