네이버 로그인

1. 네이버 개발자 사이트에서 프로젝트 세팅

Naver Developers

  • 네이버 개발자 사이트에 로그인후 내 애플리케이션을 누른다

naver-login1

  • 앱이름과 사용할 API에서 네이버 로그인을 고른다

naver-login2

  • 필수로 얻고싶은 항목을 체크한다
  • 서비스 환경에서 iOS를 선택한다

naver-login3

  • 앱스토어 다운로드 링크를 기입한다 (아직 개발버전이라 없으면 아무 링크나 기입한다)
  • 앱내에서 사용할 URL Schemes를 입력해준다

2. Info에 URL Schemes 추가

naver-login4

  • 프로젝트 - Info - URL Types 에서 + 버튼을 클릭후 identifier와 상단에서 작성한 URL Schemes 를 그대로 입력해준다 (identifier는 아무렇게나 써도 된다 ex) naver-login)

3. 팟 설치후 전처리값 변경

pod 'naveridlogin-sdk-ios'
  • 팟파일에 ‘naveridlogin-sdk-ios’ 추가 후 pod install 해줌

  • 프로젝트파일/Pods/naveridlogin-sdk-ios/NaverThirdPartyLogin.framework/Headers/NaverThirdPartyConstantsForApp.h 경로로 이동해 해당 파일을 열어줌

naver-login5

  • 밑에 #define(전처리기) 값을 변경 해줌

    • kServiceAppUrlScheme (작성한 스키마)
    • kConsumerKey (네이버 개발자 사이트에있는 Client ID)
    • kConsumerSecret (네이버 개발자 사이트에있는 Client Secret)
    • kServiceAppName (앱 이름)

4. Appdelegate에서 loginConnection instance 생성후 설정값 셋업

import NaverThirdPartyLogin

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        application.registerForRemoteNotifications()
        let instance = NaverThirdPartyLoginConnection.getSharedInstance()
        instance?.isNaverAppOauthEnable = true //네이버앱 로그인 설정
        instance?.isInAppOauthEnable = true //사파리 로그인 설정

        instance?.serviceUrlScheme = "" //URL Scheme
        instance?.consumerKey = "" //클라이언트 아이디
        instance?.consumerSecret = "" //시크릿 아이디
        instance?.appName = "" //앱이름
        
        return true
 }

5. SceneDelegate에서 receiveAccessToken처리 추가


func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    if let url = URLContexts.first?.url {
        NaverThirdPartyLoginConnection.getSharedInstance()?.receiveAccessToken(url)
    }
}

6. 네이버 로그인 버튼 클릭시 로그인 함수 실행


class ViewController: UIViewController {
    let naverLoginInstance = NaverThirdPartyLoginConnection.getSharedInstance()

    override func viewDidLoad() {
        super.viewDidLoad()

        naverLoginInstance?.delegate = self
    }
}

extension ViewController: NaverThirdPartyLoginConnectionDelegate {
    func requestNaverLogin() {
        naverLoginInstance?.requestThirdPartyLogin()
    }
    
    func oauth20ConnectionDidFinishRequestACTokenWithAuthCode() {
        guard let instance = naverLoginInstance,
              let accessToken = instance.accessToken else { return }
        // 네이버 로그인 성공시 날라오는 accessToken 처리
    }
    
    func oauth20ConnectionDidFinishRequestACTokenWithRefreshToken() {

    }
    
    func oauth20ConnectionDidFinishDeleteToken() {
        
    }
    
    func oauth20Connection(_ oauthConnection: NaverThirdPartyLoginConnection!, didFailWithError error: Error!) {
        
    }
}
  • 로그인 버튼 클릭시 requestNaverLogin() 함수를 실행시켜주면 된다