Google Firebase signin дает статус 12501 (не работает), в варианте сборки выпуска и JKS SHA

Я знаю, что этот вопрос был задан многими и получил ответ.

Итак, почему я снова задаю этот вопрос? Потому что я пробовал эти решения, и я следовал документам Google, следовал учебникам и youtube. Все равно не повезло.

Oright, это то, что я сделал в своем проекте.

: GoogleSignIn

dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        classpath 'com.google.gms:google-services:3.0.0'
      }

Gradle В (Модуль: app)

apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            keyAlias 'alias'
            keyPassword 'keypass'
            storeFile file('/home/reoxey/path/to/jks')
            storePassword 'storepass'
        }
    }
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "reoxey.com.googlesignin"
        minSdkVersion 19
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            signingConfig signingConfigs.config
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:design:25.0.0'
    compile 'com.google.firebase:firebase-auth:9.8.0'
    compile 'com.google.android.gms:play-services-auth:9.8.0'
    testCompile 'junit:junit:4.12'
}

apply plugin: 'com.google.gms.google-services'

LoginActivity.java

gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.web_client_key))
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        findViewById(R.id.sign_in_button).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                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);
            if (result.isSuccess()){
                Toast.makeText(getApplicationContext(),"Nailed it",Toast.LENGTH_LONG).show();
            }else {
                Snackbar.make(mLoginFormView,result.getStatus().toString(),Snackbar.LENGTH_LONG).show();
                Toast.makeText(getApplicationContext(),"Messed",Toast.LENGTH_LONG).show();

            }
        }
    }

строку.в XML

<string name="web_client_key">123456789-clientwebapplication.apps.googleusercontent.com</string>

в manifest нет специальной конфигурации, и я считаю, что я ничего не упускаю.

google-услуги.в JSON

{
  "project_info": {
    "project_number": "{numeric-id}",
    "firebase_url": "https://project--123456789.firebaseio.com",
    "project_id": "project--123456789",
    "storage_bucket": "project--123456789.appspot.com"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:{numeric-id}:android:sfdjgsdkdfgsfs",
        "android_client_info": {
          "package_name": "reoxey.com.googlesignin"
        }
      },
      "oauth_client": [
        {
          "client_id": "{numeric-id}-androidkey.apps.googleusercontent.com",
          "client_type": 1,
          "android_info": {
            "package_name": "reoxey.com.googlesignin",
            "certificate_hash": "{sha1-from-jks-file}"
          }
        },
        {
          "client_id": "{numeric-id}-webapplication.apps.googleusercontent.com",
          "client_type": 3
        }
      ],
      "api_key": [
        {
          "current_key": "{android-key}"
        }
      ],
      "services": {
        "analytics_service": {
          "status": 1
        },
        "appinvite_service": {
          "status": 2,
          "other_platform_oauth_client": [
            {
              "client_id": "{numeric-id}-webapplication.apps.googleusercontent.com",
              "client_type": 3
            }
          ]
        },
        "ads_service": {
          "status": 2
        }
      }
    }
  ],
  "configuration_version": "1"
}

Oright, теперь консоль Firebase.

  • создал проект с именем пакета
  • добавлен отпечаток пальца sha1, сгенерированный из jks файл
  • включена аутентификация для входа в google

вот и все, я думаю, надеюсь, что я предоставил все,
так что я упускаю.

когда я нажимаю на знак google, он дает мне ошибку с 12501 код состояния. Я не знаю, что здесь не так. Кто?

спасибо заранее.

2 ответов


Если вы добавляете все отпечатки пальцев SHA-1 в firebase, вы все равно получаете ошибку.потом (я столкнулся с этой проблемой. после этого шаги разрешены.) Попробуйте следующие шаги:

1.Перейдите на страницу учетные данные API консоли Google.

2.Щелкните учетные данные на вкладке слева.

3.Уже два по умолчанию Android и Web OAuth Client Id будут присутствовать. Вы должны создать один клиент Android и один клиент Web 2.0.

4.Идите на огневую базу.В проекте настройка, загрузка google-сервисов.JSON и вставить в папку приложения.

(все в порядке, но все же вы не можете подписать google, возможно, проблема OAuth. поэтому обязательно создайте идентификатор Android и веб-клиента.Наконец, на странице учетных данных у вас есть 2 клиента Android и два идентификатора веб-клиента.)

заполните экран содержимого OAuth также


когда вы строите свой GoogleSignInOptions, вы используете string resource web_client_key. По соображениям безопасности вы не опубликовали реальный ключ и вместо этого использовали пример value 123456789-clientwebapplication.apps.googleusercontent.com..

это значение примера не отображается в posted google-services.json, поэтому я не могу сопоставить его со значениями там. Значение должно быть client_id определены в этом блоке:

{
  "client_id": "{numeric-id}-webapplication.apps.googleusercontent.com",
  "client_type": 3
}

это то значение, которое вы использовали?

на обычным способом получения идентификатора веб-клиента использовать string resource R.string.default_web_client_id, произведенная Google Услуги Gradle Плагин С google-services.json. Есть ли причина, по которой вы не можете этого сделать и должны определить свой собственный строковый ресурс? Вы пробовали использовать default_web_client_id?