Получите ошибку при входе в систему с помощью кнопки Facebook на тех мобильных устройствах, на которых установлен Facebook Lite - PullRequest
0 голосов
/ 28 февраля 2020

Я получаю сообщение об ошибке или те мобильные телефоны, на которых не установлено приложение FB или установлена ​​облегченная версия. Я не знаю, как обрабатывать обратный вызов, чтобы при нажатии кнопки и открытии chrome и обратно информация в приложении. приложение отлично работает на мобильных телефонах с приложением Facebook. Ошибка или те мобильные телефоны, на которых не установлено приложение FB или установлена ​​облегченная версия.

class MainActivity : AppCompatActivity() {

    var a: Int = 1
    private lateinit var auth: FirebaseAuth
    private lateinit var callbackManager: CallbackManager
    lateinit var dialog: ProgressDialog
    lateinit var credential: AuthCredential

    var user = FirebaseAuth.getInstance().currentUser
    val currentUsers = FirebaseAuth.getInstance().currentUser
//    val currentUsers = FirebaseAuth.getInstance().currentUser

//    var verification:FirebaseUser?=null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        dialog = ProgressDialog(this)
        dialog.setTitle("Welcome...")
        dialog.setMessage("Signing in. Please wait!")
        auth = FirebaseAuth.getInstance()
        FacebookSdk.sdkInitialize(getApplicationContext())
        callbackManager = CallbackManager.Factory.create()


        printHashKey(this)
        // login_button.setReadPermissions("email")
        login_button.setOnClickListener {

            signIn()
            //facebookLogin()

        }

        signup_btn.setOnClickListener {
            intent = Intent(this, SignupActivity::class.java)
            startActivity(intent)
        }


        forget_pas.setOnClickListener {
            startActivity(Intent(this, forget_pass::class.java))
        }

        button.setOnClickListener {


            fun View.hideKeyboard() {
                val inputManager =
                    context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                inputManager.hideSoftInputFromWindow(windowToken, 0)
            }

            it.hideKeyboard()

            if (mail.text.toString().isEmpty() || Tpassword.text.toString().isEmpty()) {
                Toast.makeText(this, "Enter your Email and Password", Toast.LENGTH_LONG).show()
            } else {
                dialog.show()
                dialog.setCanceledOnTouchOutside(true)

                doLogin()
            }

        }


    }

    //Login code
    private fun doLogin() {
        if (mail.text.toString().isEmpty()) {
            mail.error = "Please enter email"
            mail.requestFocus()
            return
        }

        if (!Patterns.EMAIL_ADDRESS.matcher(mail.text.toString()).matches()) {
            mail.error = "Please enter valid email"
            mail.requestFocus()
            return
        }

        if (Tpassword.text.toString().isEmpty()) {
            Tpassword.error = "Please enter password"
            Tpassword.requestFocus()
            return
        }
        val user = auth.currentUser

        auth.signInWithEmailAndPassword(mail.text.toString(), Tpassword.text.toString())
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) { // && user!!.isEmailVerified

                    val user = auth.currentUser
                    Log.d("task.isSuccessful)", "task.isSuccessful)")

                    if (user!!.isEmailVerified) { // || currentUsers == null
                        startActivity(Intent(this, HomeActivity::class.java))

                        Log.d("user isEmailVerified", "user isEmailVerified")
                        dialog.cancel()

                    }
//                    startActivity(Intent(this, HomeActivity::class.java))
//                    finish()
                    else {
                        Toast.makeText(this, "Please verify your Email", Toast.LENGTH_LONG).show()
                        dialog.cancel()
                    }
                } else {

                    dialog.cancel()
                    Toast.makeText(
                        this,
                        "Error! Verify your email or Enter correct Password",
                        Toast.LENGTH_LONG
                    ).show()
                    return@addOnCompleteListener
                }
            }
    }

    //    public override fun onStart() {
    public override fun onResume() {
        super.onResume()
        // super.onStart()
//        val currentUser = auth.currentUser
        // if(a==1){}
//        var currentUser=FirebaseAuth.getInstance().currentUser


        updateUI(user)


    }

    private fun updateUI(user: FirebaseUser?) {


        Log.d("update ui fun", "function of update ui")

        FirebaseAuth.getInstance().currentUser?.reload()?.addOnSuccessListener { void ->
            //            var user = FirebaseAuth.getInstance().currentUser


            if (currentUsers != null) {
                Log.d("facebook user not null", "updateUI")
//                Toast.makeText(this,"Inside of if",Toast.LENGTH_SHORT).show()
//                finish()
                startActivity(Intent(this, HomeActivity::class.java))
//                dialog.show()
            } else {
                Toast.makeText(this, "do it", Toast.LENGTH_SHORT).show()
                Log.d("else", "else updateUI")
            }
        }

    }

    //fb code
    private fun signIn() { **below line is not working on FB LITE**
        login_button.registerCallback(callbackManager, object : FacebookCallback<LoginResult> {
            override fun onSuccess(result: LoginResult?) {
                handleFacebookAccessToken(result?.accessToken)

            }

            override fun onCancel() {

            }

            override fun onError(error: FacebookException?) {
                Log.d("fb", error.toString())
            }

        })
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        callbackManager.onActivityResult(requestCode, resultCode, data)


    }

    //facebook code
    private fun handleFacebookAccessToken(accessToken: AccessToken?) {
        //Get Credentials

        credential = FacebookAuthProvider.getCredential(accessToken!!.token)

        auth.signInWithCredential(credential)
            .addOnCompleteListener(this)
            { task ->
                if (task.isSuccessful) {
                    //Sign in success, update UI with the signed-in user's information

                    dialog.show()


//                    if (currentUsers != null) {
//                      Log.d("fb button"," currentUser!= null")
                    intent = Intent(this, HomeActivity::class.java)

                    startActivity(intent)


// updateUI(user)

                } else {
                    // If sign in fails, display a message to the user.
                    Toast.makeText(
                        baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT
                    ).show()


                    //updateUI(null)
                }

//                }
            }

    }


    //forgot_password code
    fun forgotPassword(username: EditText) {
        if (username.text.toString().isEmpty()) {
            return

        }
        if (!Patterns.EMAIL_ADDRESS.matcher(username.text.toString()).matches()) {
            return
        }

        auth.sendPasswordResetEmail(username.text.toString())
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {

                    Toast.makeText(this, "Email sent.", Toast.LENGTH_SHORT).show()

                }
            }
    }


    override fun onBackPressed() {
        super.onBackPressed()
        finishAffinity()
    }

    fun printHashKey(pContext: Context) {
        try {
            val info = pContext.getPackageManager()
                .getPackageInfo(pContext.getPackageName(), PackageManager.GET_SIGNATURES);
            for (i in info.signatures) {
                val md = MessageDigest.getInstance("SHA");
                md.update(i.toByteArray())
                val hashKey = String(Base64.encode(md.digest(), 0));
                Log.i("hash", "printHashKey() Hash Key: " + hashKey);
            }
        } catch (e: Exception) {
            Log.e("hash", e.printStackTrace().toString());
        }
    }
}

1 Ответ

0 голосов
/ 11 апреля 2020

Ключ релиза был единственным решением этой проблемы, которое я получил. Вставьте ключ разблокировки в Firebase, куда был вставлен ключ Ha sh. Узнайте, как создать ключ разблокировки.

...