APP-iOS3rd / PJ3T2_Mymory

멋쟁이사자처럼 iOS 앱스쿨 3기 팀 프로젝트
10 stars 3 forks source link

[Feat] 카카오로그인 기능구현 #129

Closed Ahario closed 7 months ago

Ahario commented 7 months ago

PR 가이드라인

PR Checklist

PR 날릴 때 체크 리스트

PR Type

어떤 종류의 PR인가요?

연관되는 issue 정보를 알려주세요

Issue Number: N/A

PR 설명하기

카카오 api를 이용한 로그인 기능을 구현하였습니다만, 현재는 받아올수있는정도가 유저 닉네임 밖에 없습니다. 로그인을 할때 쓰이는 토큰값도, 카카오유저의 고유 토큰값이 아니라서, 한번 로그아웃을하고 다시 로그인을 시도할경우 토큰값이 바꿔서 같은 유저로 인식하기 어렵습니다. 일단 뷰모델이 아닌 내부설정을 조금 했기에 먼저 머지를 하겠습니다.

어떻게 작동하나요? code 기반으로 설명해주세요

//버튼부분에 코드를 넣어서 작동합니다 LoginView 175줄
if (UserApi.isKakaoTalkLoginAvailable()) {

                        UserApi.shared.loginWithKakaoTalk {(oauthToken, error) in
                            if let error = error {
                                print("카카오로그인 에러입니다. \(error)")
                                return
                            } else {
                                UserApi.shared.me { User, Error in
                                         if let name = User?.kakaoAccount?.profile?.nickname {
                                             print("제 닉네임은 \(name) 입니다")
                                         }
}

UserApi는 카카오api가 제공하는 사용자관리 api 클라스입니다. isKakaoTalkLoginAvailable()함수를 이용해서, 먼저 유저가 카카오톡에 접속할수있는지 확인합니다. 핸드폰 유저의 경우 카카오톡 앱이 있는지 확인합니다.

확인이 완료되면 카카오톡으로 이동되어 로그인과 유저정보제공 동의서 화면이 나옵니다. 이후 동의할경우 else문, 거부할경우 if문의 에러를 출력합니다.

동의할경우 shared.me, 유저가 개발자에게 제공한다고 동의한 정보들을 확인해볼수있습니다. 저희같은경우 받을수 있는 정보인 유저 닉네임을 예시로 받고 출력해보았습니다.


스크린샷

IMG_3660

기타 언급해야 할 사항들

Ahario commented 7 months ago

URL이 KAKAO + [저희 API 키값] 이라 막쓰면 안될것같아서 저희 APIKEYS에 URL_SCHEME이라는 필드를 추가하였습니다. 바뀐 키값은 디코에 올려놓을게요