首页 > 解决方案 > GoogleSignIn API 异常:10

问题描述

我在我的应用程序中使用谷歌身份验证,但我无法让它工作。我目前的错误是

com.google.android.gms.common.api.ApiException: 10: at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source) at com.google.android.gms.auth.api.signin .GoogleSignIn.getSignedInAccountFromIntent(Unknown Source) at br.com.etc.login.LoginActivity.onActivityResult(LoginActivity.kt:123)

我的登录活动:

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>tasks>android>signinReport 获取我的 SHA1 Android Studio,Gradle 菜单

我将我的 SHA1 添加到https://console.developers.google.com/apis/credentials现在看起来像这样: 谷歌控制台面板

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

所以我去了我的firebase项目(我只用于分析),去项目设置并添加了SHA1。我还添加了一封支持电子邮件。我下载了 google-settings.json 并添加到我的项目中。IDk 如果它很重要但我的应用程序没有发布,我没有谷歌开发者帐户。

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

标签: androidkotlingoogle-oauthgoogle-signin

解决方案


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


推荐阅读