[facebook]

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

환경설정

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

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

가. 프로젝트 변경

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

나. Facebook 개발자 계정 생성 및 API 키 획득

다. Facebook 앱 키 등록

Facebook 개발자 사이트.의 4.매니페스트 수정 항목을 참고하여, facebook_app_id / fb_login_protocol_scheme 를 획득 한다.

  • 프로젝트 > res > values > facebook.xml 생성 하고, 파일을 열어 획득한 정보를 입력 한.

<resources>
    <string name="facebook_app_id">[앱 아이디 입력]</string>
    <string name="fb_login_protocol_scheme">[fb앱아이디 입력]</string>
</resources>

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

마. AndroidManifest.xml 선언 확인

<!-- FacebookContentProvider+facebook_app_id 로 적용 facebook_app_id 가 1234 라면 com.facebook.app.FacebookContentProvider1234 로 적용함-->
<provider android:authorities="com.facebook.app.FacebookContentProvider앱아이디"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />


<meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>


<activity android:name="m.client.library.plugin.thirdparty.sns.facebook.activity.LoginActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        />
<activity android:name="com.facebook.FacebookActivity"
        android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
<activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <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:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
</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'
                        classpath 'com.github.ksoichiro:gradle-eclipse-aar-plugin:+'
                }
        }

        apply plugin: 'com.android.application'
        apply plugin: 'com.github.ksoichiro.eclipse.aar'

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

        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'
                                }
                        }

                        instrumentTest.setRoot('tests')
                        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:23.0.1'
                compile 'com.facebook.android:facebook-android-sdk:4.+'
        }

FaceBook API

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

status Type

Type

Description

PROCESSING

진행 중

SUCCESS

정상 처리됨

FAIL

처리 중 문제가 발생함

Auth Type

  • Facebook 인증 기능에 대한 정의

command

Description

login

로그인

gettoken

토큰값 가져오기

graphrequest

graph api 사용

Facebook 인증 API

M.plugin('3rd_facebook').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 결과값

PERMISSIONS 참고.

FIELDS 참고.

로그인
var params = {};
params.permissions = 'email,public_profile';

M.plugin('3rd_facebook').auth({
    command: 'login',
    param : params,
    callback:function(status, result){
        console.log(result);
     }
});
토큰 가져오기
M.plugin('3rd_facebook').auth({
    command: 'gettoken',
    callback:function(status, result){
        console.log(result);
     }
});
Graph_Request
var params = {};
params.fields='id,name,email,gender,birthday,cover';


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