1) 앱 만들기
2) Facebook Login API
mavenCentral()
- 아마 기본적으로 추가되어있을것이다📄 build.gradle(Project)
repositories {
...
mavenCentral()
}
📄 settings.gradle(Project Settings)
repositories {
...
mavenCentral()
}
implementation 'com.facebook.android:facebook-login:11.3.0'
📄 build.gradle(Module)
dependencies {
...
implementation 'com.facebook.android:facebook-login:11.3.0'
}
@RequiresApi(Build.VERSION_CODES.P)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
try {
val info = packageManager.getPackageInfo(packageName, PackageManager.GET_SIGNING_CERTIFICATES)
val signatures = info.signingInfo.apkContentsSigners
val messageDigest = MessageDigest.getInstance("SHA")
for (signature in signatures) {
val md: MessageDigest
messageDigest = MessageDigest.getInstance("SHA")
messageDigest.update(signature.toByteArray())
val key = String(Base64.encode(md.digest(), 0))
Log.d("Hash key", "$key")
}
} catch(e: Exception) {
}
}
📄 res/values/strings.xml
<resources>
<string name="facebook_app_id">발급받은 값 복붙</string>
<string name="fb_login_protocol_scheme">발급받은 값 복붙</string>
</resources>
<uses-permission android:name="android.permission.INTERNET"/>
<application>
태그 안에 있는 meta-data와 activity 추가 (facebook에서 제공해주는 코드를 복사 붙여넣기 하시면 됩니닷)📄 AndroidMenifests.xml
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<application>
<!-- 여기서부터 -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<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>
<!-- 여기까지 복사 붙여넣기 -->
</application>
</manifest>
📄 activity_main.xml
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginBottom="30dp" />
📄 MainActivity.xml
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityLoginBinding
lateinit var callbackManager: CallbackManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
callbackManager = CallbackManager.Factory.create()
binding.loginButton.setReadPermissions("email")
override fun onSuccess(loginResult: LoginResult?) { }
override fun onCancel() { }
override fun onError(exception: FacebookException) { }
})
}
}
내가 만든 버튼에 로그인 기능 추가하고 싶을때
binding.btnFacebookLogin.setOnClickListener {
val loginManager = LoginManager.getInstance()
loginManager.logInWithReadPermissions(this, Arrays.asList("public_profile"))
loginManager.registerCallback(callbackManager, object : FacebookCallback<LoginResult?> {
override fun onSuccess(loginResult: LoginResult?) { }
override fun onCancel() { }
override fun onError(exception: FacebookException) { }
})
}