LANGUAGE/Kotlin

[Kotlin] Facebook 소셜 로그인

보겸삼촌 2020. 6. 29. 18:59

 

1. 페이스북 디벨로퍼스에서 앱 만들기

https://developers.facebook.com/

 

  1.1. [Project] > app > res > values > strings.xml

        대시보드 > 설정 > 기본설정 > 앱 ID를 복사해서 공백에 추가

 

      

 

  1.2. Facebook 로그인 > android

   1.3. Android용 Facebook SDK 다운로드

   1.4. project > Gradle Scripts > build.gradle (Module: app)

# facebook SDK 추가
dependencies{
    ...
    implementation 'com.facebook.android:facebook-android-sdk:[4,5)'  //추가
    ...
}

 

   1.5. project 내 Facebook SDK import

# LoginActivity

import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;


  1.6. 해시키 등록

 

     해시 키를 구하는 방법은 Java Dvelopment Kit의 인증 도구인 keytool이 설치되어 있어야 함.

    windows에서 개발 키 해시 생성하는 방법은 다음과 같음. 차후에 릴리즈 해시키를 등록해야 마켓 등록 가능

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64

 

    설치가 완료됐으면, 프로젝트에서 해시키를 구하는 방법임, onCreate() 등에서 호출하면 됨

    // 앱의 해쉬 키 얻는 함수
    private fun getAppKeyHash() {
        try {
            val info = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNATURES)
            for (signature in info.signatures) {
                val md: MessageDigest
                md = MessageDigest.getInstance("SHA")
                md.update(signature.toByteArray())
                val something = String(Base64.encode(md.digest(), 0))
                Log.e("Hash key", something)
            }
        } catch (e: Exception) {
            // TODO Auto-generated catch block
            Log.e("name not found", e.toString())
        }
    }

    

  1.7. user-permission, meta-data 추가

// project > manifest / AndroidManifest.xml

<manifest ...

  <uses-permission android:name="android.permission.INTERNET"/>   //추가
  
  <application>
     ...
     	//추가
		<meta-data 
          android:name="com.facebook.sdk.ApplicationId" 
          android:value="@string/facebook_app_id"
        /> 
     ...
     >
  </application>
</manifest>