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
?