com.google.android.gms.common.api.ApiException: 16: - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь узнать, как я могу использовать вход в Google в моем приложении для Android, но я ловлю com.google.android.gms.common.api.ApiException: 16 И я не могу найти наstackoveflow ответ, что это и почему я ловлю это.В документации я прочитал, что это «было отменено пользователем», но моя учетная запись Google приняла для установки приложений

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.auth.api.signin.GoogleSignInAccount
import android.content.Intent
import com.google.android.gms.tasks.Task
import com.google.android.gms.common.api.ApiException

class MainActivity : AppCompatActivity() {

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

        val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build()

        val mGoogleSignInClient = GoogleSignIn.getClient(this, gso)
        val account = GoogleSignIn.getLastSignedInAccount(this)
        if(account != null){
            Log.e("!!!", account.email)
        } else {
            val signInIntent = mGoogleSignInClient.signInIntent
            startActivityForResult(signInIntent, 0)
        }
    }

    public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
        if (requestCode == 0) {
            // The Task returned from this call is always completed, no need to attach
            // a listener.
            val task = GoogleSignIn.getSignedInAccountFromIntent(data)
            handleSignInResult(task)
        }
    }

    private fun handleSignInResult(completedTask: Task<GoogleSignInAccount>) {
        try {
            val account = completedTask.getResult(ApiException::class.java)

            // Signed in successfully, show authenticated UI.
            Log.e("!!!", account.email)
        } catch (e: ApiException) {
            e.printStackTrace()
        }

    }

}

Я следовал этому руководству .Сделал настройку проекта.Если это важно, я использую VDS для этого.Аккаунт был создан там же

Вот тут stackTrace:

com.google.android.gms.common.api.ApiException: 16: 
    at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source)
    at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
    at foryou.friendly.alisa.alisa.MainActivity.onActivityResult(MainActivity.kt:47)
    at android.app.Activity.dispatchActivityResult(Activity.java:7124)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4173)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4220)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1579)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:163)
    at android.app.ActivityThread.main(ActivityThread.java:6228)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

Ответы [ 5 ]

0 голосов
/ 21 июля 2019

Я разрабатываю приложение для Android с использованием Flutter, пытался интегрировать Google Sign In и столкнулся с той же проблемой с ApiException: 16 и SIGN_IN_FAILED (вместо RESULT_CANCELED).

Тип приложения на Firebase был установлен на android.

В моем случае после многих часов отладки это оказалось неправильной проблемой SHA-1 .

Как только я извлек ключ SHA-1 из своего проекта и обновил консоль Firebase, он заработал.

0 голосов
/ 24 июня 2019

Для меня работало только предоставление 2 идентификаторов клиента oauth .идентификатор клиента веб-приложения И идентификатор клиента Android

В моем приложении для Android я использую идентификатор клиента и секретный ключ веб-приложения.Несмотря на то, что я не использую идентификатор клиента Android в моем приложении, это все еще требуется.то есть, если я удаляю oauth android-клиент в консоли google api, мое приложение перестает работать ДАЖЕ, ЧТО Я НЕ ИСПОЛЬЗУЮ этот идентификатор клиента В ЛЮБОМ МЕСТЕ в моем приложении.

это абсолютно бессмысленно для меня!пойди разберись.но пока это единственное, что сработало.

невероятно правдоподобно.

0 голосов
/ 27 апреля 2019

Может быть, немного поздно для вечеринки здесь, но после более чем 4-х часов отладки я понял, что:

1.- Добавьте клиент Android с вашими отпечатками сертификатов подписи под списком идентификаторов клиента OAuth.Это обязательно.

2.- Добавьте идентификатор клиента веб-приложения в свой код на случай, если вам потребуется получить токен идентификатора

// ID and basic profile are included in DEFAULT_SIGN_IN
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                            .requestIdToken("YOUR_CLIENT_ID")
                            .requestEmail()
                            .build();

Надеюсь, это поможет

0 голосов
/ 21 мая 2019

Возникла та же проблема, оказалось, что я не установил почта поддержки на настройки проекта firebase .

В этом случае firebase покажет вам изменить настройки проекта при попытке включить Google войти в систему Аутентификация Firebase .Вы можете скопировать свой идентификатор клиента из firebase

0 голосов
/ 19 сентября 2018

У меня была та же проблема, результат запуска продолжал возвращаться с RESULT_CANCELED и errorCode 16. Проблема была в конфигурации моего клиента в консоли Google Cloud Platform.Я использовал обычный ключ API отладки и выпуска.Результат вернулся OK, когда я использовал веб-приложение в качестве конфигурации моей консоли Google.

Надеюсь, это поможет.

...