GoogleSignIn ApiException:10

时间:2019-08-22 14:24:33

标签: android kotlin google-oauth google-signin

我在我的应用中使用了google auth,但无法正常工作。我目前的错误是

  

com.google.android.gms.common.api.ApiException:10:           com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(未知来源)           位于com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(未知来源)           在br.com.etc.login.LoginActivity.onActivityResult(LoginActivity.kt:123)

我的LoginActivity:

class LoginActivity : AppCompatActivity() {
    private var googleSignInClient: GoogleSignInClient? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)

        val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(getString(R.string.google_client_id))
            .build()

        googleSignInClient = GoogleSignIn.getClient(this, gso)

         bt_login_google.onClick {
            val signInIntent = googleSignInClient!!.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 = GoogleSignIn.getSignedInAccountFromIntent(data)
            handleSignInResult(task)
        } 
    }

    private fun handleSignInResult(completedTask: Task<GoogleSignInAccount>) {
        try {
            val account = completedTask.getResult(ApiException::class.java)
            vm.loginGoogle(account?.idToken ?: "")
        } catch (e: ApiException) {
            Snackbar.make((findViewById(android.R.id.content)), R.string.error_generic, Snackbar.LENGTH_SHORT)
                .show()
            Timber.e(e)
        }
    }
}

我正在从Gradle> App>任务> android> signinReport获取SHA1 Android Studio, Gradle Menu

我将我的SHA1添加到https://console.developers.google.com/apis/credentials中,如下所示: Google Console Panel

我的(R.string.google_client_id)是客户端ID

因此,我进入了我的Firebase项目(仅用于分析),进入了项目设置并添加了SHA1。我还添加了一封支持电子邮件。 我下载了google-settings.json并添加到了我的项目中。 IDk如果重要但我的应用未发布,则我没有Google开发者帐户。

我知道这是一个常见问题,但是我尝试了所有可能想到的问题,但仍然遇到这个问题。

1 个答案:

答案 0 :(得分:0)

您应该在 OAuth 2.0 客户端 ID 下生成一个 Web 客户端 ID,而不是使用 Android 客户端 ID