메인 메뉴로 바로가기
본문으로 바로가기
로그인
회원가입
[공지]
[SDK] iOS v1.5.12 업데이트 안내
PAYCO 로그인 개발자센터
소개
개발가이드
애플리케이션 관리
고객지원
본문영역
개발 가이드
시작하기
PAYCO 로그인
서비스 설계
Server(Web)
Android
iOS
부가 기능(고급)
PAYCO 바로가입
new
서비스 설계
동의 약관 확인
이미지 리소스
SDK 다운로드
PAYCO 로그인
연동 가이드
Server(Web)
Android
iOS
※ PAYCO로 로그인을 적용하려시면 먼저
애플리케이션을 등록
해야 합니다. ※ 간편로그인 SDK를 연동하시려면 [SDK를 다운로드](/guide/sdk/download)해 주세요. --- # 0. 지원 iOS 최소 버전 * Xcode15 및 iOS 12.0 이상 부터 지원합니다. # 1. 사전준비 ## 1.1 다운로드 및 프로젝트에 추가 다운로드한 압축파일을 해제하면 SDK 폴더에 PIDThirdPartyAuth.framework가 존재합니다. 해당 파일을 프로젝트에 추가하고 SDK를 사용할 타겟을 설정합니다. * ※ 1.5.4버전부터 xcframework가 추가되었습니다. xcframework를 사용하면 arm simulator에서도 PAYCO 로그인 SDK를 사용할 수 있습니다. 1.5.4버전부터 추가된 xcframework는 arm simulator 환경을 지원합니다. * ※ 1.5.6버전부터 32bit 아키텍쳐에 대한 지원을 중단 합니다. 원활한 사용을 위해서는 개발환경의 OS최소지원 버전을 iOS11.0 이상으로 설정해 주세요. * ※ 1.5.10버전부터 원활한 사용을 위해서는 개발환경을 Xcode15 및 OS최소지원 버전 iOS12.0 이상으로 설정해 주세요. * ※ 1.5.12버전부터 PIDThirdPartyAuth.xcframework 설정시 Embed & Sign 옵션으로 설정해 주세요. ## 1.2 프로젝트 설정 * 타켓을 선택한 후, Build Settings => Other linker Flags에 **-ObjC** 를 입력합니다. --- ![img_ios-paycoid-third-sdk-guide191016.png](/static/img/guide/1.2image.3rd.png) --- * Build Phases => Link Binary With Libraries에서 다음 라이브러리들을 추가합니다. * SystemConfiguration.framework * AdSupport.framework * WebKit.framework * AuthenticationServices.framework * SafariServices.framework * 프로젝트 설정 info 탭의 URL Types에 아래 항목을 추가합니다. 1. paycologinsdk : Payco 로그인을 위한 필수 값 2. {YourAppScheme} : 앱에 따라 달라지는 고유 값 *
앱 고유 Scheme이 가장 마지막에 등록된 것이 아니라면 아래 2.2 서버와 통신하는 정보 설정에서
targetScheme
값을 필수로 입력해야됩니다.
--- ![img_ios-paycoid-third-sdk-guide191016.png](/static/img/guide/1.2.2image.3rd.png?v=(2021. 7. 15) --- # 2. 초기화 ## 2.1 URL Scheme 핸들링 설정 **AppDelegate.m** 파일을 열어서 아래와 같이 추가합니다.(샘플 프로젝트의 AppDelegate.m 파일 참고) ```objc #import
- (BOOL)application : (UIApplication *)app openURL : (NSURL *)url options : (NSDictionary
*)options { return [PIDThirdPartyAuth handleOpenURL:url]; } ``` ## 2.2 서버와 통신하는 정보 설정 설정 초기화 함수에 아래와 같이 서버와 통신에 필요한 기본 정보를 세팅합니다. 설정해야 하는 값들은 다음과 같습니다. * ClientID, SecretCode : PAYCO 아이디로 로그인을 연동하기 위해서 반드시 필요한 정보이며, 애플리케이션 등록을 통해 발급하실 수 있습니다. * ServiceCode : FRIENDS로 설정합니다. * ServiceName : 애플리케이션 등록시 설정한 애플리케이션 이름으로 설정합니다. * ServerType : Real(PIDServerTypeReal)로 설정합니다. * ShowDebugLog : 로그인 과정에 대한 로그 정보를 보여줍니다. 리얼 배포시에는 NO로 설정하여 배포해야 합니다. * LocaleType(생략가능) : 한국어(setLocaleType:PIDLocaleTypeDefault)로 설정합니다. * TargetScheme(
주의
) :
프로젝트에 url scheme이 많은 경우 호출되길 원하는 scheme명을 해당 부분에 지정합니다.
생략할 경우 프로젝트 url scheme 중 가장 마지막에 등록된 url scheme으로 호출하게 됩니다. ```objc #import
/// Note! 인증정보: 실제정보로 교체해주세요! PIDAuthThirdConfig *config = [[PIDAuthThirdConfig alloc] init]; [config setClientID:@"프로젝트에 지급된 client id"]; [config setSecret:@"프로젝트에 지급된 secret code"]; [config setServiceCode:@"FRIENDS"]; [config setServiceName:@"프로젝트에 지급된 service name"]; [config setServerType:PIDServerTypeReal]; [config setShowDebugLog:NO]; [config setLocaleType:PIDLocaleTypeDefault]; [config setTargetScheme:타겟 스킴]; [config setDelegate:self]; [PIDThirdPartyAuth setup:config]; ``` ## 2.3 콜백 델리게이트 설정 아래와 같이 4가지 경우에 간편로그인 결과를 델리게이트 함수로 전달합니다. * 로그인 성공 * 로그인 실패 * 로그아웃 성공 * 로그아웃 실패 ```objc @interface 사용자클래스: 상속클래스
#pragma mark - PIDThirdPartyAuthDelegate - (void)didSuccessLogin:(NSDictionary *)userInfo { // 로그인 성공 후 화면 처리 } // user Info에는 다음과 같은 정보들이 포함되어 있습니다. //[userInfo objectForKey:PIDServiceExtraKey]; // 로그인 유저 access token //[userInfo objectForKey:PIDServiceExtraKey]; // 기타 로그인 정보 - (void)didFailLogin:(PIDError *)error { // 에러에 따른 처리 (가이드 하단 제공 함수 or 샘플 프로젝트 참고) } - (void)didSuccessLogout { // 로그아웃 성공 후 화면 처리 } - (void)didFailLogout:(PIDError *)error { // 에러에 따른 처리 (가이드 하단 제공 함수 or 샘플 프로젝트 참고) } ``` (!) User ID는 회원 정보 조회 API로 획득 가능합니다. (SDK Version 1.3.0 이상) # 3. 로그인 ## 3.1 로그인 창 띄우기 ```objc [PIDThirdPartyAuth openLoginView]; ``` # 4. 로그아웃 ## 4.1 서비스 로그아웃 ```objc [PIDThirdPartyAuth logout:self.accessToken]; // 호출 시 accessToken을 반드시 넘겨줍니다. ``` # 5. 회원 정보 조회 * 로그인 후 회원 정보를 얻는 API입니다. ```objc [PIDThirdPartyAuth memberProfileWithAccessToken:self.accessToken completionHandler:^(PIDMemberProfile * _Nullable memberProfile, PIDError * _Nullable error) { if (error == nil) { // TODO 회원 정보 조회 성공 시 처리를 작성 } else { // TODO 회원 정보 조회 실패 시 처리를 작성 } }]; ``` # 6. 연결 끊기 * [개인정보 제공 동의 철회 API](/guide/development/offer-agreement)를 호출해 주세요 # 7. 추가 가이드 ## 8.1 SDK 버전 정보 ```objc [PIDThirdPartyAuth version]; ``` ## 7.2 에러 핸들링 로그인 실패, 로그아웃 실패시 델리게이트 함수에서 매개변수로 에러를 받을 수 있습니다. PIDError isPIDError 함수가 YES일 경우 SDK 에러, 그 외에는 XCode 모듈 내부 에러(네트워크 에러 등)입니다. ```objc - (void)didFailLogin:(PIDError *)error { if ([error isPIDError]) { // SDK 커스텀 에러 if (error.code == PIDErrorCancelLogin) { // 사용자 취소 액션 처리 } } NSLog(@"third didFailLogin %d %@", (int)error.code, error.localizedDescription); [error alertMessage:@"로그인 실패"]; } ``` ## 7.3 에러 코드 참고 * PIDErrorCancelLogin: 사용자가 로그인 혹은 로그아웃을 취소한 경우 * 024 : 유효하지 않은 토큰에 대한 API GW의 에러 -> 토큰 만료된 경우이므로 로그인 화면을 다시 호출해야 합니다. ## 7.4 추가 정보 조회하기 * 바로가입 서비스의 약관 동의를 설정한 서비스는 아래 방식으로 약관 동의 결과를 확인할 수 있습니다. ```objc - (void)didSuccessLogin:(NSDictionary *)userInfo { NSDictionary *serviceExtra = [userInfo objectForKey:@"serviceExtra"]; // Note! Optional value. serviceExtra가 nil이 아닐때만 사용하세요. if (serviceExtra) { // 만약 로그인 후 특정 키/값이 추가 파라미터로 넘겨져올 경우 serviceExtra에 저장되어 있습니다. NSString *termsExample = [NSString string]; if (serviceExtra[@"TERMS_EXAMPLE"]) { termsExample = serviceExtra[@"TERMS_EXAMPLE"]; } } } ```
맨위로 이동