我无法使用Firebase身份验证登录我的应用程序

时间:2019-06-22 04:31:07

标签: android firebase-authentication

我无法使用户登录。每次尝试登录时都显示“登录失败”,我正在使用链接中描述的所有方法

https://medium.com/@myric.september/authenticate-using-google-sign-in-kotlin-firebase-4490f71d9e44

MainActivity类:AppCompatActivity(){     lateinit var mGoogleSignInClient:GoogleSignInClient     val RC_SIGN_IN:Int = 1     lateinit var mGoogleSignInOptions:GoogleSignInOptions

private lateinit var firebaseAuth: FirebaseAuth

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    configureGoogleSignIn()
    setupUI()
    firebaseAuth = FirebaseAuth.getInstance()

}

companion object {
    fun getLaunchIntent(from: Context) = Intent(from, MainActivity::class.java).apply {
        addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
    }
}

override fun onStart() {
    super.onStart()
    val user = FirebaseAuth.getInstance().currentUser
    if (user != null) {
        startActivity(HomeActivity.getLaunchIntent(this))
        finish()
    }
}

private fun configureGoogleSignIn() {
    mGoogleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(R.string.default_web_client_id))
        .requestEmail()
        .build()
    mGoogleSignInClient = GoogleSignIn.getClient(this, mGoogleSignInOptions)
}

private fun setupUI() {
    google_button.setOnClickListener {
        signIn()
    }
}

private fun signIn() {
    val signInIntent: Intent = mGoogleSignInClient.signInIntent
    startActivityForResult(signInIntent, RC_SIGN_IN)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == RC_SIGN_IN) {
        val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
        try {
            val account = task.getResult(ApiException::class.java)
            firebaseAuthWithGoogle(account!!)
        } catch (e: ApiException) {
            Toast.makeText(this, "Google sign in failed:(", Toast.LENGTH_LONG).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    firebaseAuth.signInWithCredential(credential).addOnCompleteListener {
        if (it.isSuccessful) {

            startActivity(HomeActivity.getLaunchIntent(this))
        } else {
            Toast.makeText(this, "Google sign in failed:(", Toast.LENGTH_LONG).show()
        }
    }
}

}

0 个答案:

没有答案