회원
로그인
요청
카카오
GET https://kauth.kakao.com/oauth/authorize?response_type=CODE&client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}
애플
GET https://appleid.apple.com/auth/authorize?response_type=CODE&client_id=${1HOUR_SERVICE_ID}&redirect_uri=${REDIRECT_URI}
Redirect Uri
-
{REDIRECT_URI} : AuthorizationCode를 제외한 Uri
GET /api/users/auth-callback/PROVIDER_NAME?code=AuthorizationCode HTTP/1.1
Path parameters
Parameter | Description |
---|---|
|
OAuth 제공자 (예: kakao, apple 등) |
Query parameters
Parameter | Description |
---|---|
|
OAuth 제공자로부터 받은 인증 코드 |
응답
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"accessToken" : "jwt.access.token",
"refreshToken" : "jwt.refresh.token",
"isProfileRequired" : true
}
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
JWT AccessToken |
|
|
|
true |
JWT RefreshToken |
|
|
|
true |
사용자가 프로필 설정을 완료해야 하는지 여부 |
회원가입
요청
HTTP request
POST /api/users/signup HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer jwt.token.here
{
"birthday" : "1990-01-01",
"isMarketingAllowed" : true,
"interestIds" : [ 1, 2, 3, 4, 5 ],
"gender" : "male",
"nickname" : "아무개",
"isNotificationAllowed" : true,
"mbti" : "intj"
}
Request parts
Part | Description |
---|---|
|
업로드할 사용자 프로필 정보 (JSON) |
|
업로드할 대표 프로필 사진 |
|
업로드할 서브 프로필 사진들 |
Request fields
필드명 | 타입 | 필수값 | 설명 | 제약사항 |
---|---|---|---|---|
|
|
true |
사용자 닉네임 |
|
|
|
true |
성별 |
MALE or FEMALE만 입력 가능 (대소문자 상관 없음) |
|
|
true |
생년월일 |
yyyy-DD-mm 포맷 입력 |
|
|
true |
MBTI |
존재하는 MBTI만 입력 가능 (대소문자 상관 없음) |
|
|
true |
관심사 목록 |
DB에 존재하는 관심사만 가능, 반드시 5개여야 함 |
|
|
true |
마케팅 정보 수신 동의 여부 |
true 수신 동의, false 수신 거부 |
|
|
true |
알림 권한 동의 여부 |
true 권한 동의, false 권한 거부 |
닉네임 중복확인
요청
HTTP request
GET /api/users/duplicate/USER_NICKNAME HTTP/1.1
Path parameters
Parameter | Description |
---|---|
|
중복 검사할 닉네임 |
응답
HTTP response
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"isDuplicate" : false
}
Response fields
필드명 | 타입 | 필수값 | 양식 | 설명 |
---|---|---|---|---|
|
|
true |
중복 여부 |
에러 코드
-
아직 미완성입니다 참고만 해주세요
코드 | 코드명 |
---|---|
|
소셜로그인 시, 요청으로 넘겨준 provider에 해당하는 Social Provider가 일치하지 않는 경우 |
|
소셜로그인 시, 기존 가입자의 소셜로그인 정보를 찾을 수 없는 경우 |
|
API 요청 시, 요청 헤더에 JWT 토큰이 없는 경우 (Bearer jwt.token.here) |
|
API요청 시, 해당 API에 접근할 수 있는 권한이 없는 사용자의 경우 |
|
소셜로그인 시, 현재 Provider와 다른 Provider로 소셜로그인을 진행한 이력이 있는 경우 |
|
유효하지 않은 소셜 인증 아이디일 경우 |
|
사용자 조회 시, 입력 받은 id의 사용자가 존재하지 않는 경우 |
|
회원가입 시, 가입하려는 사용자가 이미 가입을 완료한 상태인 경우 |
|
회원가입 시, 닉네임의 길이가 2글자 이상 8글자 이하가 아닐때 |
|
회원가입 시, 닉네임의 형식이 (한글음절/숫자[옵션]) 혹은 (한글/영어) 혹은 (한글/영어/숫자) 조합으로 이루어져 있지 않은 경우 |
|
회원가입 시, 사용자가 올해 기준 법정 성인 연령이 아닌 경우 |
|
회원가입 시, 성별을 찾을 수 없는 경우 ('MALE', 'FEMALE' 만 가능) |
|
회원가입 시, MBTI가 잘못 입력된 경우 |
|
프로필 사진 업로드시, 프로필 사진이 1개 이상 3가 이하가 아닌 경우 |
|
프로필 사진 업로드시, 이미 최초 프로필 사진 등록을 완료한 경우(최초 회원가입 프로필 사진 등록) |
|
닉네임이 이미 사용 중인 경우 |
|
Credit 조회 시, 특정 사용자의 Credit정보를 찾을 수 없는 경우 |
|
회원가입 시, 입력한 5개의 관심사 중에 존재하지 않는 관심사가 포함된 경우 |
|
입력한 관심사가 일정 개수 이상인 경우 |
|
입력한 관심사가 개수가 일치하지 않는 경우 |
|
중복된 관심사가 입력된 경우 |
|
알 수 없는 관심사 값이 입력된 경우 |
|
관심사가 비어있을 경우 |
|
이미지 업로드시 이미지를 읽을 수 없는 경우 |
|
이미지 업로드시, 이미지가 NULL인 경우 |
|
이미지 업로드시, 이미지의 크기가 0인 경우 |
|
이미지 업로드시, 이미지의 이름이 비어있거나 NULL인 경우 |
|
이미지 업로드시, PNG JPEG JPG SVG 확장자가 아닌 파일인 경우 |
|
유효하지 않은 대표 사진 index일 경우 |
|
대표 프로필 이미지가 존재하지 않는 경우 |
|
대표 프로필 이미지가 너무 많은 경우 |
|
이미지의 크기가 너무 큰 경우 |
|
Oauth2 사용자의 프로필을 요청할 수 없는 경우(Provider 서버 예외) |
|
JWT 검증 시, JWT 토큰 시그니처가 잘못된 경우 |
|
JWT 검증 시, 토큰 형식이 JWT가 아닌 경우 |
|
JWT 검증 시, JWT 토큰이 만료된 경우 |
|
JWT 검증 시, 유효하지 않은 JWT 토큰인 경우 |
|
이미지 업로드시, AWS S3에 이미지를 업로드할 수 없는 경우 |
|
예기치 못한 예외가 발생한 경우 |
|
잘못된 멀티파트 요청일 경우 |
|
잘못된 데이터 요청일 경우 |
|
API 요청 시, request-fields의 값이 NULL인 경우 |