메인 메뉴로 바로가기
본문으로 바로가기
로그인
회원가입
[공지]
[SDK] iOS v1.5.12 업데이트 안내
PAYCO 로그인 개발자센터
소개
개발가이드
애플리케이션 관리
고객지원
본문영역
개발 가이드
시작하기
PAYCO 로그인
서비스 설계
Server(Web)
Android
iOS
부가 기능(고급)
PAYCO 바로가입
new
서비스 설계
동의 약관 확인
이미지 리소스
SDK 다운로드
PAYCO 로그인
연동 가이드
Server(Web)
Android
iOS
※ PAYCO로 로그인을 적용하려시면 먼저 [애플리케이션을 등록](/application/registView)해야 합니다. ※ 간편로그인 SDK를 연동하시려면 [SDK를 다운로드](/guide/sdk/download)해 주세요. *** # 0\. 지원 android 최소 SDK 버전 * Android 4.4 (API Level 19) 이상 부터 지원합니다. # 1. 사전준비 ## 1.0 애플리케이션 등록 * [PAYCO 로그인 개발자센터 > 애플리케이션 관리 > 신규등록](https://developers.payco.com/application) 페이지에서 PAYCO 로그인 기능을 이용할 앱을 등록합니다. * 특히, 플랫폼 > **안드로이드 앱 패키지명**이 실제 애플리케이션의 패키지명과 일치해야 PAYCO 로그인 기능을 이용할 수 있습니다. --- ![/aos1.0image.3rd.png](/static/img/guide/aos1.0image.3rd.png) --- ## 1.1 Gradle script 적용 방법 * 애플리케이션 등록이 완료되었다면 서비스 앱 프로젝트의 gradle파일에 dependency를 추가합니다. ```java repositories { mavenCentral() google() } dependencies { ... implementation 'com.payco.android:payco-login:1.5.14' ... } ``` ## 1.2 Android Manifest 적용 방법 * Android Manifest 파일에 아래와 같이 세팅합니다. * manifest 태그 하위에 아래 권한을 추가합니다. ```xml
``` * API 30 이상을 타겟으로 하는 앱은 아래와 같이 `
` 태그를 설정해주세요. ```xml
``` * application 태그 하위에 아래 액티비티를 추가합니다.
\*\* 정상적인 로그인 동작을 위해 아래 activity 태그의 모든 옵션과 intent-filter 를 동일하게 사용해주세요. ```xml
``` # 2. 초기화 ## 2.1 Application 에 아래의 내용을 추가합니다. * Application 클래스가 존재하지 않는다면 생성합니다. * Application 생성하더라도 AndroidManifest.xml에 입력하지 않으면 정상동작하지 않습니다. * 반드시 생성한 Application 클래스를 AndroidManifest.xml의 application 태그의 name에 입력해줍니다. ```java @Override public void onCreate() { super.onCreate(); PaycoLoginManagerConfiguration configuration = new PaycoLoginManagerConfiguration.Builder() .setServiceProviderCode("FRIENDS") .setClientId(CLIENT_ID) .setClientSecret(CLIENT_SECRET) .setAppName(getResources().getString(R.string.app_name)) .setEnvType(EnvType.REAL) //.setLangType(LangType.DEFAULT) .build(); PaycoLoginManager.getInstance().init(this, configuration); } ``` (!)
clientId/clientSecret
: PAYCO 아이디로 로그인을 연동하기 위해서 반드시 필요한 정보이며, 애플리케이션관리 > 애플리케이션 등록을 통해 발급하실 수 있습니다. (!)
serviceProviderCode
: FRIENDS로 설정합니다. (!)
appName
: 애플리케이션 등록시 설정한 애플리케이션 이름으로 설정합니다. (!)
envType
: EnvType.REAL로 설정합니다. (!)
debug
: PaycoLoginSDK내 로그 정보를 출력해서 볼 수 있습니다. 리얼 배포시는 false로 세팅하여 배포해야 합니다. (!)
LangType
(생략가능) : 한국어(LangType.DEFAULT)로 설정합니다. ## 2.2 minSdkVersion 이 19 인 (Android 4.4 를 지원하는 앱)인 경우 아래의 내용을 추가합니다. * 간편로그인 SDK 에서는 내부적으로 TLS 1.2 통신이 이루어집니다. Android 4.4(API Level 19) 를 지원하는 앱에서는 TLS 1.2 를 지원하기 위해 아래의 코드가 추가적으로 필요합니다. (
Android 4.4 를 지원하지 않는 앱에서는 아래 코드를 추가하지 않으셔도 됩니다.
) 2.2.1. build.gradle 에 Android 4.4 TLS 1.2 지원을 위해 아래와 같이 Google Play 의존성을 추가합니다. ```gradle implementation 'com.google.android.gms:play-services-base:18.1.0' // https://developers.google.com/android/guides/setup 에서 play-services-base 라이브러리의 버전을 참고합니다. // 위 18.1.0 버전은 2023.1.19 기준으로 작성되었으며, 사용하고 계신 앱에서 이미 Google Play 의존성이 추가되어 있다면 18.1.0 보다 더 낮은 버전을 사용하셔도 무관합니다. ``` 2.2.2 Application 클래스에서 초기화시 onCreate 에서 아래의 코드를 사용합니다. ```java @Override public void onCreate() { super.onCreate(); // 단말기가 Android 4.4 이하인 경우 // Google Play 를 통해 TLS 1.2 지원 패치 진행 if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { try { ProviderInstaller.installIfNeeded(this); } catch (GooglePlayServicesRepairableException e) { // Google Play 관련 에러를 사용자가 해결하면 간편로그인 SDK 를 정상적으로 사용할 수 있는 케이스입니다. // Google Play 에서 제공하는 UI 를 통해 사용자가 에러를 해결할 수 있도록 노출합니다. GoogleApiAvailability.getInstance().showErrorNotification(this, e.getConnectionStatusCode()); return; } catch (GooglePlayServicesNotAvailableException e) { // TODO : Android 4.4 에서 간편로그인 SDK 를 정상적으로 사용할 수 없는 케이스입니다. // 사용자에게 적절한 안내가 필요합니다. } } // ... 중략 // 간편로그인 초기화 진행 (2.1 Application 에 아래의 내용을 추가 코드 부분 참조) } ``` ## 2.3 Activity에 아래의 내용을 추가합니다. * 메인 혹은 로그인 Activity의 onActivityResult 메소드를 오버라이드 해서 PaycoLoginManager.getInstance().onActivityResult(...) 코드를 삽입하기 * 로그인의 결과를 받기 위함이기 때문에, 로그인을 호출하는 액티비티의 onActivityResult 에서 호출해야 한다. ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); PaycoLoginManager.getInstance().onActivityResult(this, requestCode, resultCode, data); } ``` # 3. 로그인 ```java OnLoginListener onLoginListener = new OnLoginListener() { @Override public void onFail(PaycoLoginError paycoLoginError) { // TODO 로그인 실패시 처리를 작성 } @Override public void onLogin(PaycoLoginExtraResult paycoLoginExtraResult) { // TODO 로그인 성공시 처리를 작성 } @Override public void onCancel() { // TODO 로그인 취소시 처리를 작성 } }; PaycoLoginManager.getInstance().login(/* Activity */this, onLoginListener); ``` # 4. 로그아웃 * 서비스 로그아웃 ```java OnLogoutListener onLogoutListener = new OnLogoutListener() { @Override public void onLogout() { // TODO 로그아웃 성공시 처리를 작성 } @Override public void onFail(PaycoLoginError error) { // TODO 로그아웃 실패시 처리를 작성 } }; PaycoLoginManager.getInstance().logout(onLogoutListener); ``` # 5. 회원가입 ```java OnLoginListener onLoginListener = new OnLoginListener() { @Override public void onLogin(PaycoLoginExtraResult paycoLoginExtraResult) { // TODO 가입 성공시 처리를 작성 } @Override public void onCancel() { // TODO 가입 취소시 처리를 작성 } @Override public void onFail(PaycoLoginError error) { // TODO 가입 실패시 처리를 작성 } }; PaycoLoginManager.getInstance().join(/* Activity */ this, onLoginListener); ``` # 6. 회원 정보 조회 * 로그인 후 회원 정보 조회 ```java PaycoLoginManager.getInstance().getMemberProfile(PaycoLoginManager.getInstance().getAccessToken(), new OnMemberProfileListener() { @Override public void onMemberProfile(final PaycoMemberProfile profile) { // TODO 회원 정보 조회 성공 시 처리를 작성 } @Override public void onFail(final PaycoLoginError paycoIdError) { // TODO 회원 정보 조회 실패 시 처리를 작성 } }); ``` # 7. 연결 끊기 * [개인정보 제공 동의 철회 API](/guide/development/offer-agreement)를 호출해 주세요 # 8. 토큰 관리 ## 8.1 액세스 토큰 받기 * 로그인된 후에 access token 정보 알아오기 ```java PaycoLoginManager.getInstance().getAccessToken(); ``` ## 8.2 로그인 아이디 받기 * PaycoLoginManager.getInstance().getLoginId() 메서드가 삭제되었습니다. (SDK Version 1.4.0 부터) * 기존에 PaycoLoginManager.getInstance().getLoginId() 메서드로 획득할 수 있었던 login ID는 6.회원 정보 조회 Get Member Profile로 획득 가능합니다.(SDK Version 1.4.0 이상) # 9. 추가 가이드 ## 9.1 초기화 여부 확인 ```java if (PaycoLoginManager.getInstance().isInitialized()) { // initialized } else { // not initialized } ``` ## 9.2 추가 정보 조회하기 * 바로가입 서비스의 약관 동의를 설정한 서비스는 아래 방식으로 약관 동의 결과를 확인할 수 있습니다. ```java private void callLogin() { OnLoginListener onLoginListener = new OnLoginListener() { @Override public void onLogin(PaycoLoginExtraResult paycoLoginExtraResult) { Log.d(TAG, "[PaycoLoginManager]login onLogin() call") String termsExample = ""; Hashtable
extraInfo = paycoLoginExtraResult.getExtraInfo(); if (extraInfo.size() > 0) { if (extraInfo.containsKey("TERMS_EXAMPLE")) { termsExample = extraInfo.get("TERMS_EXAMPLE"); } } Log.d(TAG, "termsExample:" + termsExample); Log.d(TAG, "refresh_token:" + paycoLoginExtraResult.getRefreshToken()); } @Override public void onCancel() { Log.d(TAG, "[PaycoLoginManager]login onCancel()"); } @Override public void onFail(PaycoLoginError error) { Log.d(TAG, "[PaycoLoginManager]login onFail()"); } }; PaycoLoginManager.getInstance().login(this, onLoginListener); } ``` ## 9.3 의존 라이브러리 | Name | Reference | Version | License | | ---- | --------- | ------- | ------- | | gson | [https://code.google.com/p/google-gson/](https://code.google.com/p/google-gson/) | 2.7 | Apache License 2.0 | | androidx.browser | [https://developer.android.com/jetpack/androidx/releases/browser#1.4.0](https://developer.android.com/jetpack/androidx/releases/browser#1.4.0) | 1.4.0 | Androidx |
맨위로 이동