[sns.kakao]

Kakao 제품에 대한 필수 API 를 정의

환경설정

  • Kakao API를 사용하기 위해서는 아래와 같은 순서로, 프로젝트 변환 및 환경 값 설정이 필요 하다.

    가. 프로젝트 변경 [Gradle 환경]
    나. 카카오 라이브러리 적용
    다. 카카오 개발자 계정 생성 및 API 키 획득
    라. 카카오 앱 키 등록
    마. gradle.properties 파일 생성 및 카카오 버전 적용
    바. AndroidManifestx.xml
    사. Gradle 설정
    

가. 프로젝트 변경

기존 프로젝트를 Gradle 환경으로 변경한다.

나. 프로젝트에 kakao 라이브러리 적용

다. 카카오 개발자 계정 생성 및 API 키 획득

라. 카카오 앱 키 등록

  • 프로젝트 > res > values > plugin_3rd_party_kakao_string.xml 생성하고, 파일을 열어 획득한 카카오 app key를 입력 한다.

<resources>
    <string name="kakao_app_key">AAAAAAAAAAAAAAAAAAAAAA</string>
    <string name="kakao_scheme">kakaoAAAAAAAAAAAAAAAAAAAAAA</string>
    <string name="kakaolink_host">kakaolink</string>

</resources>

Note

kakao_scheme 값은, “kakao” + 획득된 kakao_app_key 값을 조합하여, 생성한다.

마. gradle.properties 파일 생성 및 적용

  • 프로젝트 > gradle.properties 파일 생성

  • 아래와 같이 SDK 정보 설정

KAKAO_SDK_GROUP=com.kakao.sdk
KAKAO_SDK_VERSION=1.16.0

Note

배포중인 라이브러리는 SDK 버전은 1.16.0을 기준으로 생성되었고, 필요에 따라 버전을 올려 적용한다. 만약, 버전을 올렸을때 문제 발생시, 모피어스 기술지원 게시판 을 통해 문의.

바. AndroidManifest.xml 선언 확인

<meta-data android:name="com.kakao.sdk.AppKey" android:value="@string/kakao_app_key"/>

<activity android:name="m.client.library.plugin.thirdparty.sns.kakao.ExtendSnsKakaoStartup">
   <intent-filter>
     <action android:name="android.intent.action.VIEW"/>
     <category android:name="android.intent.category.DEFAULT"/>
     <category android:name="android.intent.category.BROWSABLE"/>
     <data android:host="@string/kakaolink_host" android:scheme="@string/kakao_scheme"/>
   </intent-filter>
</activity>

<activity
  android:name="com.kakao.auth.authorization.authcode.KakaoWebViewActivity"
  android:configChanges="orientation|screenSize"
  android:launchMode="singleTop"
  android:windowSoftInputMode="adjustResize">
</activity>

사. Gradle 설정

  • 프로젝트 > build.gradle 적용

buildscript {
                repositories {
                        jcenter()
                        maven {url "https://maven.google.com"}
                        maven {url "https://jcenter.bintray.com"}
                }

                dependencies {
                        classpath 'com.android.tools.build:gradle:3.0.1'
                }
        }

        apply plugin: 'com.android.application'

        repositories {
                jcenter()
                maven {url "https://maven.google.com"}
                maven {url "https://jcenter.bintray.com"}
                maven {url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
        }

        android {
                compileSdkVersion 27
                buildToolsVersion "27.0.2"
                sourceSets {
                        main {
                                manifest.srcFile 'AndroidManifest.xml'
                                java.srcDirs = ['src']
                                resources.srcDirs = ['src']
                                aidl.srcDirs = ['src']
                                renderscript.srcDirs = ['src']
                                res.srcDirs = ['res']
                                assets.srcDirs = ['assets']
                                jniLibs {
                                        srcDir 'libs'
                                }
                        }

                        debug.setRoot('build-types/debug')
                        release.setRoot('build-types/release')
                }

                defaultConfig {
                        multiDexEnabled true
                }

                dexOptions {
                        preDexLibraries = false
                }

                lintOptions {
                        checkReleaseBuilds false
                        abortOnError false
                }

                buildTypes {
                        release {
                                //minifyEnabled true
                                //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
                        }
                }
        }

        dependencies {
                compile fileTree(dir: 'mcoreLibs', include: '*.jar', exclude: ['android-support-v4.jar'])
                compile 'com.android.support:appcompat-v7:27.0.1'
         // kakao sdk
                compile (group: project.KAKAO_SDK_GROUP, name: 'kakaolink', version: project.KAKAO_SDK_VERSION)
                compile (group: project.KAKAO_SDK_GROUP, name: 'kakaotalk', version: project.KAKAO_SDK_VERSION)
                compile (group: project.KAKAO_SDK_GROUP, name: 'usermgmt', version: project.KAKAO_SDK_VERSION)
        }

Kakao API

Kakao 제품에 대한 3rd Party연동 기능을 제공 한다.

status Type

Type

Description

PROCESSING

진행 중

SUCCESS

정상 처리됨

FAIL

처리 중 문제가 발생함

Auth Type

  • 카카오 인증 기능에 대한 정의

command

Description

login

로그인

logout

로그아웃

signup

앱 연결

unlink

앱 연결해제

getinfo

정보 가져오기

setinfo

정보 저장하기

gettoken

토큰값 가져오기

getapphash

앱 해쉬값 가져오기

Kakao 인증 API

M.plugin('3rd_kakao').auth( setting)

Changed in version 2.0.0.

Arguments
  • setting (Object) – 설정 정보

  • setting.command (String) – 기능 ( Auth Type )

  • setting.setinfovalue (Object) – 사용자 정보 셋팅 (setinfo 필수)

  • setting.scallback (String) – 모니터링 콜백 함수 이름 (session 필수)

  • setting.callback (Function) – API 결과 콜백 함수

M.callback(status, result)
Arguments
  • status (String) – API호출 결과값

  • result (Object) – 3rd Party 모듈 결과 값

  • result.result (String) – Kakao command 결과값

로그인
M.plugin('3rd_kakao').auth({
    command: 'login',
    callback:function(status, result){
        console.log(result);
     }
});
로그아웃
M.plugin('3rd_kakao').auth({
    command: 'logout',
    callback:function(status, result){
        console.log(result);
     }
});
앱 연결
var params = {};
params.nickname='테스트';
params.profile_image='';
params.thumbnail_image='';

M.plugin('3rd_kakao').auth({
    command: 'signup',
    param: params,
    callback:function(status, result){
        console.log(result);
     }
});

Note

기본으로 추가되어 있는 사용자 정보로는 nickname, profile_image, thumbnail_image가 있습니다. 이 세개의 parmeter중 하나도 채우지 않고 요청하면, 설정 > 사용자 관리 > 앱 연동 설정 > 카카오 계정 연동 메뉴의 우선순위에 의해 카카오톡 혹은 카카오스토리 프로필이 자동으로 들어가게 됩니다. 위의 세개의 parameter 중 일부(1개 혹은 2개)만 parameter로 보내면 남은 정보는 카카오 계정 연동 우선순위에 따라 카카오톡이나 카카오스토리 정보로 채워지게 됩니다. 때문에, profile_image, thumbnail_image 중 하나만 parameter로 채우게 되면, 두 이미지가 달라질 수 있습니다(parameter로 보낸 이미지와, 카카오톡 혹은 카카오 스토리의 이미지가 다를 경우). 따라서, profile_image 혹은 thumbnail_image를 parameter로 요청할 땐 꼭 profile_image, thumbnail_image의 쌍으로 요청하는 것을 권장합니다.

앱 연결 해제
M.plugin('3rd_kakao').auth({
    command: 'unlink',
    callback:function(status, result){
        console.log(result);
     }
});
정보 가져오기
M.plugin('3rd_kakao').auth({
    command: 'getinfo',
    callback:function(status, result){
        console.log(result);
     }
});
정보 저장하기
var params = {};
params.nickname='테스트';

M.plugin('3rd_kakao').auth({
    command: 'setinfo',
    param: params,
    callback:function(status, result){
        console.log(result);
     }
});
토큰값 가져오기
M.plugin('3rd_kakao').auth({
    command: 'gettoken',
    callback:function(status, result){
        console.log(result);
     }
});
앱 해쉬값 가져오기
M.plugin('3rd_kakao').auth({
    command: 'getapphash',
    callback:function(status, result){
        console.log(result);
     }
});