Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- nidthirdpartylogin
- github 시작하기
- xcode 공백 표시
- TestFlight
- xcode 엔터 표시
- fetchdescriptor
- 메모이제이션
- SwiftUI
- 캐러셀
- Tuist
- 팀 개발을 위한 git
- spm 에러
- 타뷸레이션
- JPG
- webp
- NVME
- 함께자라기
- 테스트 타겟
- png
- contentalignmentpoint
- .pbxproj
- 클린 아키텍처
- swift 모듈화
- heic
- swiftdata
- Cocoa Pod
- 무한스크롤
- 코드스쿼드
- Firestore
- JPEG
Archives
Link
- Today
- Total
Sure, Why not?
Naver 로그인 본문
naveridlogin 종속성 설치
https://github.com/naver/naveridlogin-sdk-ios-swift
Naver Developers 애플리케이션 등록 (API 이용신청)
다운로드 URL 은 https://apps.apple.com/app/id{앱ID} 넣어줘야 함
테스트 시에는 아무 주소 넣으면 된다.
URL Schme는 프로젝트 Bundle Identifier 넣어 줌
Queried Url Schemes
서드파티 앱에서 네이버 앱을 실행할 수 있도록 URL Scheme를 작성한다.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>naversearchapp</string>
<string>naversearchthirdlogin</string>
</array>
애플리케이션 설정 값 등록
<key>NidAppName</key>
<string>LoginPractice</string>
<key>NidClientID</key>
<string>$(NAVER_CLIENT_ID)</string>
<key>NidClientSecret</key>
<string>$(NAVER_CLIENT_SECRET)</string>
<key>NidUrlScheme</key>
<string>io.hogeunjo.LoginPractice</string>
네이버는 앱키가 없어도 되서, 바로 하드코딩 했음
초기세팅 완료~
이제 로직을 구현할 차례~
SDK 초기화설정
@main
struct MyApp: App {
init() {
NidOAuth.shared.initialize()
NidOAuth.shared.setLoginBehavior(.appPreferredWithInAppBrowserFallback)
}
var body: some Scene {
WindowGroup {
ContentView()
// ...
.onOpenURL { url in
if NidOAuth.shared.handleURL(url) {
return
}
}
}
}
}
NaverLoginAdapter
import Foundation
import NidThirdPartyLogin
final class NaverLoginAdapter: SocialLoginService {
@MainActor
func login() async throws -> UserInfo {
return try await withCheckedThrowingContinuation { continuation in
NidOAuth.shared.requestLogin { result in
switch result {
case .success(let loginResult):
let userInfo = UserInfo(
id: loginResult.accessToken.tokenString,
name: "Naver User",
email: "naver@example.com"
)
continuation.resume(returning: userInfo)
case .failure(let error):
print("==== Naver Login Error ====")
print("Error: \(error.localizedDescription)")
print("==============================")
continuation.resume(throwing: AuthError.loginFailed(service: .naver))
}
}
}
}
@MainActor
func logout() async throws {
NidOAuth.shared.logout()
}
func getServiceName() -> String {
return "Naver Auth"
}
}
다른 소셜로그인과 달리, 네이버 로그인에서는 로그인 과정에서 사용자 정보가 자동으로 제공되지 않는다.
로그인 후에 Access Token을 가지고, API 호출을 통해 사용자 정보를 가져올 수 있다.
지금은 소셜로그인 연습프로젝트이기 때문에 임의로 설정하였다.
결과
네이버까지 소셜로그인 학습을 마무리를 지었다.
카카오 로그인 하나만을 위해 처음 어댑터 패턴을 설계할 때는 어려움이 있었지만,
구현 과정을 통해 점차 익숙해지면서 구글, 애플, 네이버 로그인을 추가할 때는
어댑터만 추가하면 되는 구조 덕분에 점점 개발 속도가 빨라지는 것이 체감이 되었다.
소셜로그인 끝!
GitHub - joho2022/LoginPractice
Contribute to joho2022/LoginPractice development by creating an account on GitHub.
github.com
'💻' 카테고리의 다른 글
특수문자 체크 (1) | 2025.04.03 |
---|---|
SwiftUI) Custom TextField Placeholder (2) | 2025.04.01 |
Google 로그인 (0) | 2025.03.21 |
Apple 로그인 (0) | 2025.03.19 |
kakao 로그인 (0) | 2025.03.18 |