неразрешенная ссылка на getSignInResultFromIntent - PullRequest
0 голосов
/ 22 ноября 2018

Привет, я новичок в Android Studio и ничего не могу найти в Интернете, чтобы решить эту проблему с неразрешенной ссылкой.Я следую инструкциям в Интернете, чтобы создать Google Sign in через firebase в моем приложении с использованием Kotlin.Я чувствую, что это легко исправить, но я не нашел ничего, чтобы исправить эту ошибку.

Проект все еще может запускать приложение, но он не работает должным образом с моим отступом пользовательского интерфейса.

Снимок экрана с кодом ниже.

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
}

}

`

Проблема здесь

Ссылка на скриншот кода

1 Ответ

0 голосов
/ 22 ноября 2018

Вам просто нужно заменить GOOGLE_SIGN_IN_API на GoogleSignInApi в строке с ошибкой.Убедитесь, что вы читаете документы API, например: https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInApi

...