본문 바로가기
iOS/iOS

네이버 로그인 연동 - 3 / 3

by 패쓰킴 2024. 4. 8.
728x90

2024.04.08 - [iOS/iOS] - 네이버 로그인 연동 - 1 / 3

2024.04.08 - [iOS/iOS] - 네이버 로그인 연동 - 2 / 3

 

네이버 앱도 등록 했고!

프로젝트에 환경 설정도 마무리 했다면!

이제 네이버 로그인을 해봅시다.

 

여기서 주의 할 점은 제가 겪은 바로는 이 로그인 동작 코드는 ViewController타입의 파일에서만 실행이 되더라구요?

사실 귀찮아서 이래저래 .. 안해봤어여

우린 일단 방법을 아는게 중요하니까! 

시작해봅시다.

 

로그인 화면 파일로 이동해볼게요

import NaverThirdPartyLogin

class LoginVC: UIViewController {
  private let naverInstance = NaverThirdPartyLoginConnection.getSharedInstance()
}

네이버 로그인 인스턴스를 선언해주고요

 

@objc private func naverLogin(_ sender: UIButton) {
  naverInstance?.delegate = self
  naverInstance?.requestThirdPartyLogin()
}

딜리게이트를 연결해준 뒤 

'requestThirdParthLogin()'만 호출 해주면 끝입니다.

간단하죠잉... 실행해보면

계속 눌러주면

드디어 로그인 화면을 만날 수 있었습니다 !!

 

 

로그인 후 처리는 'NaverThirdPartyLoginConnectionDelegate' 메서드를 통해서 원하는 대로 구현 해주시면 됩니다.

viewController에 NaverThirdPartyLoginConnectionDelegate를 채택하고 필수로 구현해주어야 하는 4개 메소드를 넣어줄게요

func oauth20ConnectionDidFinishRequestACTokenWithRefreshToken() {}
func oauth20ConnectionDidFinishDeleteToken() {}
func oauth20Connection(_ oauthConnection: NaverThirdParthLoginconnection!, didFailWithError error: Error!) {}
func oauth20ConnectionDidFinishRequestACTokenWithAuthCode() {}

여기에서 맨 마지막 메서드가 로그인 요청이 완료된 후 호출 되는 메서드 입니다.

로그인이 제대로 완료가 되는지 확인하려면 네이버 API를 호출하여 확인 할 수 있어요.

func oauth20ConnectionDidFinishRequestACTokenWithAuthCode() {
  userInfo()
}

private func userInfo() {
  guard let isValidAccessToken = naverInstance?.isValidAccessTokenExpireTimeNow() else { return }
  if isValidAccessToken { return }
  
  guard let tokenType = naverInstace?.tokenType else { return }
  guard let accessToken = naverInstace?.accessToken else { return }
  let url = URL(string: "https://openapi.naver.com/v1/nid/me")!
  let authorization = "\(tokenType) \(accessToken)"
  let request = AF.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: ["Authorization": authorization])
  request.responseDecodable(of: NaverUser.self) { response in
    switch response.result {
    case .success(let response):
      print(response)
    case .failure(let error):
      print(error.localizedDescription)
    }
  }
}
struct NaverUser: Codable {
  let resultcode: String?
  let message: String?
  let response: Response?
}

struct Response: Codable {
  // 가져오러는 값 넣어주시면 됩니다!
}

 

이렇게 작성하고 로그인을 해보면 결과값으로 

resultcode: "00"
message: "success"
response: //

혹시 resultcode: "024" / message: "Authentication failed (인증 실패하였습니다.)" 라고 뜨시는 분은

authorization프로퍼티 값에 띄어쓰기까지 제대로 입력했는지 확인해보세요!

제가 저 띄어쓰기 실수때문에 삽질을 했거든요 ^^

 

고럼 네이버 로그인 연동 완료! 끝!

728x90

'iOS > iOS' 카테고리의 다른 글

네이버 로그인 연동 - 2 / 3  (0) 2024.04.08
네이버 로그인 연동 - 1 / 3  (0) 2024.04.08
테스트 디바이스  (0) 2024.01.23
HTTP 허용  (0) 2023.09.16
페이지네이션(Pagination) 개발 시 발생할 수 있는 문제  (0) 2023.08.31

댓글