android 에서 KaKao Login API 를 이용하여 어플을 만들어보자
* 사용방법 *
1. Gradle (Project : XX) 파일의 allprojects - repositories 안에 아래 두 줄을 추가한다. > 실행환경 구성1
1 2 3 | //kakao mavenCentral() maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' } | cs |
2. Gradle (Module: app) 파일의 dependencies 안에 아래 한 줄을 추가한다. > 실행환경 구성2
1 2 | //KaKao Login implementation group: project.KAKAO_SDK_GROUP, name: 'usermgmt', version: project.KAKAO_SDK_VERSION | cs |
3. gradle.properties 파일 하단에 아래 두 줄도 추가한다. > 실행환경 구성3
1 2 3 | #KaKao Login KAKAO_SDK_GROUP=com.kakao.sdk KAKAO_SDK_VERSION=1.1.7 | cs |
4. 로그인하는 화면 xml 에 버튼 추가 > 해당 코드는 일반 커스텀 버튼에 카카오 버튼을 추가함 (카카오 버튼은 visibility 를 gone 으로 꼭!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <Button android:id="@+id/login_kakao" android:layout_width="match_parent" android:layout_height="40dp" android:layout_gravity="center" android:layout_marginRight="2dp" android:layout_weight="1" android:background="@color/kakao_bg" android:drawableLeft="@drawable/login_kakao" android:paddingRight="10dp" android:text="카카오 로그인" android:textColor="@color/kakao" android:textSize="5pt" /> <com.kakao.usermgmt.LoginButton android:id="@+id/login_kakao_real" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:visibility="gone" /> | cs |
5. 카카오 로그인 기능을 구현하기 위해 GlobalApplication 클래스 추가
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 32 | package com.nadri.api; import android.app.Activity; import android.app.Application; import com.kakao.auth.KakaoSDK; public class GlobalApplication extends Application { private static volatile GlobalApplication obj = null; private static volatile Activity currentActivity = null; @Override public void onCreate() { super.onCreate(); obj = this; KakaoSDK.init(new KakaoSDKAdapter()); } public static GlobalApplication getGlobalApplicationContext() { return obj; } public static Activity getCurrentActivity() { return currentActivity; } // Activity가 올라올때마다 Activity의 onCreate에서 호출해줘야한다. public static void setCurrentActivity(Activity currentActivity) { GlobalApplication.currentActivity = currentActivity; } } | cs |
6. 방금 추가한 GlobalApplication 을 AndroidManifest.xml 에 application 태그 속성안에 아래 구문도 추가해준다. > 패키지명 주의!
1 | android:name=".api.GlobalApplication" | cs |
7. 카카오 로그인 기능을 구현하기 위해 KaKaoSDKAdapter 클래스 추가
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | package com.nadri.api; import android.app.Activity; import android.content.Context; import com.kakao.auth.ApprovalType; import com.kakao.auth.AuthType; import com.kakao.auth.IApplicationConfig; import com.kakao.auth.ISessionConfig; import com.kakao.auth.KakaoAdapter; public class KakaoSDKAdapter extends KakaoAdapter { /** * Session Config에 대해서는 default값들이 존재한다. * 필요한 상황에서만 override해서 사용하면 됨. * @return Session의 설정값. */ @Override public ISessionConfig getSessionConfig() { return new ISessionConfig() { @Override public AuthType[] getAuthTypes() { return new AuthType[] {AuthType.KAKAO_ACCOUNT}; } @Override public boolean isUsingWebviewTimer() { return false; } @Override public ApprovalType getApprovalType() { return ApprovalType.INDIVIDUAL; } @Override public boolean isSaveFormData() { return true; } }; } @Override public IApplicationConfig getApplicationConfig() { return new IApplicationConfig() { @Override public Activity getTopActivity() { return GlobalApplication.getCurrentActivity(); } @Override public Context getApplicationContext() { return GlobalApplication.getGlobalApplicationContext(); } }; } } | cs |
8. 이제, 실제 로그인을 구현 할 Activity 나 Fragment 상단에 변수를 선언해주고
1 2 3 | SessionCallback callback; Button login_kakao; LoginButton login_kakao_real; | cs |
9. Activity 든 Fragment 든 onCreate() 에 세션콜백도 선언해주고
1 2 3 | //KaKao Login callback = new SessionCallback(); Session.getCurrentSession().addCallback(callback); | cs |
10. 로그인 버튼을 클릭했을 때의 리스너를 등록해준다. > 위에서 가짜 버튼을 추가했으니 performClick() 메소드를 꼭 써줘야 한다.
1 2 3 4 5 6 7 8 9 | //카카오 로그인 login_kakao = (Button)getView().findViewById(R.id.login_kakao); login_kakao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { login_kakao_real.performClick(); } }); login_kakao_real = (LoginButton)getView().findViewById(R.id.login_kakao_real); | cs |
11. 마지막으로 맨 하단에 SessionCallback 메소드까지 정의해주면 끝 !
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 32 33 34 35 36 37 38 39 40 | //KaKao Login private class SessionCallback implements ISessionCallback { @Override public void onSessionOpened() { UserManagement.requestMe(new MeResponseCallback() { @Override public void onFailure(ErrorResult errorResult) { String message = "failed to get user info. msg=" + errorResult; ErrorCode result = ErrorCode.valueOf(errorResult.getErrorCode()); if (result == ErrorCode.CLIENT_ERROR_CODE) { //에러로 인한 로그인 실패 //finish(); } else { //redirectMainActivity(); } } @Override public void onSessionClosed(ErrorResult errorResult) { } @Override public void onNotSignedUp() { } @Override public void onSuccess(UserProfile userProfile) { //로그인에 성공하면 로그인한 사용자의 일련번호, 닉네임, 이미지url등을 리턴합니다. //사용자 ID는 보안상의 문제로 제공하지 않고 일련번호는 제공합니다. Log.e("UserProfile", userProfile.toString()); Log.e("UserProfile", userProfile.getId() + ""); long number = userProfile.getId(); } }); } @Override public void onSessionOpenFailed(KakaoException exception) { // 세션 연결이 실패했을때 // 어쩔때 실패되는지는 테스트를 안해보았음 ㅜㅜ } } //end.of.sessionCallback | cs |
'MOBILE > Android' 카테고리의 다른 글
안드로이드 앱 안에서 외부 앱 열기 (0) | 2018.08.08 |
---|---|
안드로이드 RollingText 사용법 (0) | 2018.08.08 |
안드로이드 Firebase 사용방법 (0) | 2018.08.07 |
안드로이드 위도,경도로 주소값 가져오는 방법 (0) | 2018.08.06 |
안드로이드 현재 내 위치값(좌표값) 구하기 (0) | 2018.08.05 |
댓글