This is my code for facebook login in my app.
private fun handleFacebookSignIn() {
val loginManager = LoginManager.getInstance()
loginManager.logInWithReadPermissions(this, listOf("email", "public_profile"))
loginManager.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
override fun onSuccess(result: LoginResult) {
println(result.accessToken)
loginViewModel.facebookSignIn(result)
toast(getString(R.string.sign_in_success))
val intent = Intent(requireContext(), HomeActivity::class.java)
startActivity(intent)
}
override fun onCancel() {
// To Do
}
override fun onError(error: FacebookException) {
// To Do
}
})
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
callbackManager.onActivityResult(requestCode, resultCode, data)
}
Here logInWithReadPermissions is deprecated, what is the alternative to this? And also onActivityResult method was deprecated, how can I use facebook login with ActivityResultLauncher?
You're right, both logInWithReadPermissions and onActivityResult methods for Facebook login are deprecated in the latest Facebook SDK for Android. Here's how you can update your code to use the alternatives:
Replacing
logInWithReadPermissions:LoginManager.getInstance().logInWithLoginRequest(this,loginRequest)instead.LoginRequestobject with the desired permissions. For example, for email and public_profile:Kotlin
Handling Login Results with
ActivityResultLauncher:registerForActivityResultto register a callback for the Facebook login activity.callbackManager.onActivityResult(requestCode, resultCode,data)with your callback:Kotlin