首页 > 解决方案 > 对 getSignInResultFromIntent 的未解决引用

问题描述

嗨,我是 Android Studio 的新手,我在网上找不到任何东西来解决这个未解决的参考问题。我按照在线教程使用 Kotlin 在我的应用程序上通过 firebase 创建 Google 登录。我觉得这很容易解决,但我还没有找到任何可以解决此错误的方法。

该项目仍然可以运行该应用程序,但它不能与我的缩进 UI 一起正常工作。

代码截图和下面的截图。

import android.content.Intent
import android.content.res.Configuration
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.util.Log
import android.widget.Toast
import com.google.android.gms.auth.api.Auth
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
import com.google.android.gms.common.api.GoogleApiClient
import com.google.firebase.auth.FirebaseAuth
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.auth.api.signin.GoogleSignInResult
import com.google.android.gms.common.ConnectionResult
import com.google.firebase.auth.AuthCredential
import com.google.firebase.auth.GoogleAuthCredential
import com.google.firebase.auth.GoogleAuthProvider
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
override fun onConnectionFailed(p0: ConnectionResult) {
    Toast.makeText(this,""+p0.errorMessage,Toast.LENGTH_SHORT).show() //To change body of created functions use File | Settings | File Templates.
}


companion object {
    private val PERMISSION_CODE =9999
}

lateinit var mGoogleApiClient:GoogleApiClient
lateinit var firebaseAuth:FirebaseAuth
//lateinit var alertDialog:AlertDialog

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if(requestCode == PERMISSION_CODE) {
        val result:GoogleSignInResult = Auth.GOOGLE_SIGN_IN_API.getSignInResultFromIntent(data) //Error here---  
        if(result.isSuccess) {
            val account:GoogleSignInAccount? = result.signInAccount
            val idToken:String? = account!!.idToken

            val credential = GoogleAuthProvider.getCredential(idToken,null)
            firebaseAuthWithGoogle(credential)
        }
        else{
            Log.d("EDMT_ERROR","Login Unsuccessful")
            Toast.makeText(this,"Login Unsuccessful",Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(credential: AuthCredential) { // changed from AuthCredential?
    firebaseAuth!!.signInWithCredential(credential)
        .addOnSuccessListener { authResult ->
            val logged_email = authResult.user.email
            val logged_activity = Intent(this@MainActivity,LoggedActivity::class.java)
            logged_activity.putExtra("email",logged_email)
            startActivity(logged_activity)
        }
        .addOnFailureListener{
            e-> Toast.makeText(this,""+e.message,Toast.LENGTH_SHORT).show()
        }
}


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    configureGoogleClient()

    firebaseAuth = FirebaseAuth.getInstance()

    /*alertDialog = SpotsDialog.Builder(0) //Github thing that i may have to fix
        .setContext(this)
        .setMessage("Please wait")
        .setCancelable(false)
        .build()   */

    btn_sign_in.setOnClickListener {
        signIn()
    }
}

private fun signIn() {
    val Intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient) //maybe add Intent:Intent!
    startActivityForResult(intent, PERMISSION_CODE)
}

private fun configureGoogleClient() {
    val options = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) // maybe change to options:GoogleSignInOptions! =
        .requestIdToken(getString(R.string.default_web_client_id))
        .requestEmail()
        .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
        .enableAutoManage(this,this)
        .addApi(Auth.GOOGLE_SIGN_IN_API,options)
        .build()
    mGoogleApiClient.connect()  // don't forget it
}

}

`

问题在这里

链接到代码的屏幕截图

标签: androidandroid-studiokotlingoogle-authentication

解决方案


你应该只需要用错误替换GOOGLE_SIGN_IN_APIGoogleSignInApi行了。确保您阅读 API 文档,例如:https ://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInApi


推荐阅读