Facebook login not working when app in not installed on device but works perfect with Facebook app installed Android

38 Views Asked by At

I am trying to use facebook login in my app when the facebook app is installed i get onSuccess callback and works perfectly. When facebook app is not installed onCancelled is called and the method throws class not found exception even after clicking on continue.

Fragment code

binding.llSignInWithFacebook.setOnClickListener {
                if (AppUtil.isNetworkAvailable(requireActivity())) {
                    val i = Intent(requireActivity(), LoginWithFacebook::class.java)
                    startActivityForResult(i, FACEBOOK_LOGIN_REQUEST_CODE)

//                    performFacebookLogin()
                } else {
                    Toast.makeText(
                        requireActivity(),
                        resources.getString(R.string.no_internet_connection),
                        Toast.LENGTH_SHORT
                    ).show()
                }

        } 


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == FACEBOOK_LOGIN_REQUEST_CODE) {
            activity?.finish()
        }
    }

LoginWithFacebook

private lateinit var loginManager: LoginManager

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    loginManager = LoginManager.getInstance()

    try {
        sdkInitialize(applicationContext)
        loginManager.logOut()
        loginManager.logInWithReadPermissions(this, listOf("public_profile, email"))
        setDefaultBehavior()
    } catch (e: Exception) {
        Toast.makeText(this, "Connection error, please try again", Toast.LENGTH_SHORT).show()
        finish()
    }
}

private fun setDefaultBehavior() {
    callbackManager = create()
    loginManager.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
        override fun onSuccess(result: LoginResult) {
            try {
                updateUI(result)
            } catch (ignored: Exception) {
            }
        }

        override fun onCancel() {
            finish()
        }

        override fun onError(error: FacebookException) {
            Log.d("MyTag", "Error: ${error.message} ", error)
            Toast.makeText(this@LoginWithFacebook, resources.getString(R.string.connection_error), Toast.LENGTH_SHORT).show()
            finish()
        }
    })
}
0

There are 0 best solutions below