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프로퍼티 값에 띄어쓰기까지 제대로 입력했는지 확인해보세요!
제가 저 띄어쓰기 실수때문에 삽질을 했거든요 ^^
고럼 네이버 로그인 연동 완료! 끝!
'iOS > iOS' 카테고리의 다른 글
동시성 프로그래밍 (2) - GCD/Operation에 앞서 (0) | 2024.07.24 |
---|---|
동시성 프로그래밍 (1) - GCD/Operation에 앞서 (0) | 2024.07.16 |
네이버 로그인 연동 - 2 / 3 (0) | 2024.04.08 |
네이버 로그인 연동 - 1 / 3 (0) | 2024.04.08 |
테스트 디바이스 (0) | 2024.01.23 |
댓글