카카오 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()함수를 이용해서, 먼저 유저가 카카오톡에 접속할수있는지 확인합니다. 핸드폰 유저의 경우 카카오톡 앱이 있는지 확인합니다.
PR 가이드라인
PR Checklist
PR 날릴 때 체크 리스트
PR Type
어떤 종류의 PR인가요?
연관되는 issue 정보를 알려주세요
Issue Number: N/A
PR 설명하기
카카오 api를 이용한 로그인 기능을 구현하였습니다만, 현재는 받아올수있는정도가 유저 닉네임 밖에 없습니다. 로그인을 할때 쓰이는 토큰값도, 카카오유저의 고유 토큰값이 아니라서, 한번 로그아웃을하고 다시 로그인을 시도할경우 토큰값이 바꿔서 같은 유저로 인식하기 어렵습니다. 일단 뷰모델이 아닌 내부설정을 조금 했기에 먼저 머지를 하겠습니다.
어떻게 작동하나요? code 기반으로 설명해주세요
UserApi는 카카오api가 제공하는 사용자관리 api 클라스입니다. isKakaoTalkLoginAvailable()함수를 이용해서, 먼저 유저가 카카오톡에 접속할수있는지 확인합니다. 핸드폰 유저의 경우 카카오톡 앱이 있는지 확인합니다.
확인이 완료되면 카카오톡으로 이동되어 로그인과 유저정보제공 동의서 화면이 나옵니다. 이후 동의할경우 else문, 거부할경우 if문의 에러를 출력합니다.
동의할경우 shared.me, 유저가 개발자에게 제공한다고 동의한 정보들을 확인해볼수있습니다. 저희같은경우 받을수 있는 정보인 유저 닉네임을 예시로 받고 출력해보았습니다.
스크린샷
기타 언급해야 할 사항들
현재 카카오로그인은 파이어베이스와 연결이 안되었어서, 로그인 후 화면전환이 없습니다. 그래서 앱이 시작할때 자동으로 로그인하게 해두었으니, 카카오톡으로 연결테스트를 하시고 앱을 껏다가 키면, 자동으로 카카오톡은 로그아웃이 되어있을겁니다.
찾아보니 카카오톡 로그인 버튼을 만드는 기준이 있는데, 버튼을 만들때 그것은 참고하고 만들었는지 잘 모르겠습니다. 기능들을 먼저 올리고 추후 가이드를 참고해서 버튼모양을 수정하겠습니다
카카오 공식 api가 Alamofire를 사용하고, 없을경우 자동으로 다운로드 받는다고 합니다. Package에 Alamofire가 추가되었습니다.