statusCode=DEVELOPER_ERROR при входе в Google

Ниже код, который я использую для входа в Google. Я добавил файл google-services.json в папку приложения. Я использую classpath 'com.google.gms:google-services:2.0.0 'в корневом модуле gradle. Я проверил свой пакет в консоли разработчика и его правильность, и я добавил ключ SHA1, который я получил, выполнив команду keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android на терминале (я использую ubuntu). Я включил Google+ API. Я создал экран согласия OAuth и идентификатор клиента OAuth. Тем не менее я получаю сообщение об ошибке ниже, когда пытаюсь войти в систему с помощью google-

{statusCode=DEVELOPER_ERROR, разрешение=null}

Я проверяю аналогичный вопрос, но не смог найти подходящего решения. Код

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestProfile().requestId()
            .requestEmail().requestScopes(new Scope(Scopes.PLUS_ME))
            .requestScopes(new Scope(Scopes.PLUS_LOGIN))
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    googleButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);

    }
    });

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            handleSignInResult(result);
        } 
    }
    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {
            // Signed in successfully, show authenticated UI.
            GoogleSignInAccount acct = result.getSignInAccount();

        } else {
            // Signed out, show unauthenticated UI.
            // updateUI(false);
        }
    }
    @Override
    protected void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }
    @Override
    protected void onStop() {
        super.onStop();
        if(mGoogleApiClient.isConnected())
        {
            mGoogleApiClient.disconnect();
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        if(mGoogleApiClient.isConnected())
        {
            mGoogleApiClient.connect();
        }
    }

Манифест

<uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <!-- To use account credentials -->
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

person Android Developer    schedule 24.05.2016    source источник


Ответы (7)


Вероятно, ваша проблема заключается в том, что вы выбрали SHA1 из ~/.android/debug.keystore, но не использовали его для подписи своей сборки.

  1. Перейдите на вкладку «Подписание» параметров модуля и добавьте профиль с единственным полем Store File, установленным на /Users/<your_user>/.android/debug.keystore.

  2. На вкладке Ароматизаторы выберите его в раскрывающемся списке Signing Config.

  3. На вкладке «Типы сборки» выберите его в раскрывающемся списке Signing Config для вашего типа сборки (скорее всего, Debug).

  4. Очистка и восстановление.

person Aleksey Gureiev    schedule 05.07.2016

Если вы работаете на двух разных компьютерах, вам нужно снова сгенерировать SHA1 и добавить в console.firebase.google.com, загрузить google-service.json и добавить в свой проект.

person Moises Apaza Q    schedule 19.11.2016

У меня такая же проблема, и это решение сработало. Надеюсь, это поможет вам и другим.

Примените плагин: «com.android.application».

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {

Убедитесь, что этот applicationId совпадает с именем вашего пакета в файле манифеста (прописные и строчные буквы имеют значение)

        applicationId "com.example" 
        minSdkVersion 17
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
person Ravi Vaniya    schedule 04.08.2017
comment
+1 здесь. По какой-то причине (ошибка пользователя?) идентификатор приложения в моем манифесте com.company.appname был изменен в файле build.gradle моего приложения: company.com.appname. Исправление этого решило проблему для меня. - person Zoccadoum; 22.09.2017

Используйте .requestIdToken(BACKEND_CLIENT_ID) с параметрами GoogleSignInOptions.

Как получить BACKEND_CLIENT_ID, можно найти здесь: https://developers.google.com/identity/sign-in/android/start-integrating#get_your_backend_servers_oauth_20_client_id

Надеюсь, это помогло!

person teh.fonsi    schedule 20.06.2016

решается путем добавления SHA-1 хранилища ключей отладки в консоль firebase для моего приложения, которое находится здесь C:\Users\my name.android когда вы создаете хранилище ключей для выпуска, измените его в консоли Firebase

person amorenew    schedule 02.07.2016

Спасибо Алексею Гурееву за подсказку... Я решил свою проблему, убедившись, что ключи отладки действительно используются во время сборки.

Для меня в Android Studio проблема заключалась в том, что конфигурация подписи вообще не была установлена. Мне до сих пор интересно, как это произошло.

Как только я установил Signing Config в свою конфигурацию с именем «debug», все заработало.

введите здесь описание изображения

person Sameer    schedule 25.04.2018

Я столкнулся с той же проблемой с моим проектом React Native.

Мне пришлось сгенерировать SHA-1 key, используя папку debug.keystore in android/app.

Запустите приведенную ниже команду в терминале после изменения каталога на cd C:\Program Files\Java\jdk1.8.0_251\bin. (У вас может быть другая версия JDK).

keytool -list -v -keystore "D:\{ProjectName}\android\app\debug.keystore" -alias androiddebugkey -storepass android -keypass android

person Kushal Desai    schedule 16.09.2020