android - 对 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
}
}
`
解决方案
你应该只需要用错误替换GOOGLE_SIGN_IN_API
就GoogleSignInApi
行了。确保您阅读 API 文档,例如:https ://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInApi
推荐阅读
- pact - 在语义发布中处理 nextRelease 版本
- c# - C# WPF - 在文本框中键入时用逗号格式化数字
- hadoop - 阿里巴巴MaxCompute如何根据key对值进行分组?
- css - 为什么更新数据库中的行后出现登录问题?
- java - 仅在需要时更新 Java 中的字符串变量
- c# - 如何定义一个采用 List
和 List的方法 在 C# 中 - javascript - React Recompose:在 WithStateProps 中创建的方法不可访问
- eclipse - BIRT 报告/将两个数据集中的字段合并到一个动态文本框中
- javascript - 使用 Angular7/firebase 对数组中的数据进行排序
- google-vision - Google Vision Api 文本检测换行符