2016-11-12 18 views
12

bildiriyor. Bu sorunun birçok kişi tarafından sorulduğunu ve yanıtlandığını biliyorum.Google Firebase, 12501 durumunu (çalışmayan), sürüm oluşturma varyantında ve jks SHA

Peki, neden bu soruyu tekrar soruyorum? Bu çözümleri denedim ve Google dokümanlarını takip ettim, dersleri ve youtube takip ettim. Hala hayır şans.

Tamam, projemde yaptığım buydu.

Proje: GoogleSignIn

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

Gradle (Modül: Uygulama)

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(); 

      } 
     } 
    } 

string.xml

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

Bildiride özel bir yapılandırma yok ve inanıyorum ki orada hiçbir şey eksik değilim.

google-services.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, şimdi Firebase konsol.

  • jks üretilen katma sha1 parmak izi
  • sanırım bu kadar

signin google için kimlik doğrulaması etkin dosya paket adıyla oluşturulan proje, herşeyi sağlanan umut
bu yüzden burada ne eksik değilim.

google işaretini tıklattığımda, bana durum koduyla bir hata veriyor. Burada neyin yanlış olduğunu bilmiyorum. Kimse?

Teşekkürler.

+0

Bir hata ayıklama APK'sı oluşturdunuz ve oturum açmayı denediniz mi? –

+0

açıkçası, ancak farklı sha1 parmak izi – Reoxey

+0

Bu durum aynı durumla başarısız mı oldu? –

cevap

0

(. Bu çözümlenene adımlar sonra bu sorunu karşı karşıya idi.) Bu adımlar deneyin:

1.Go için Google Console API kimlik bilgileri.

2. Sol sekmede kimlik bilgilerini tıklatın.

3.Al önceden iki varsayılan Android ve Web OAuth istemcisi Kimliği mevcut olacaktır. Bir Android İstemcisi ve Bir Web 2.0 İstemcisi oluşturmanız gerekir.

4. Firebase'e gidin. Proje ayarı, google-services.json uygulamasını indirin ve uygulama klasörüne yapıştırın.

(Her şey iyi ama yine de google belki OAuth problemi. Böylece 2 Android Client ve İki Web istemci kimliğini elde ettikten kimlik sayfasında ID.Finally Android ve Web istemcisi oluşturmak için emin olun demektir signin olamaz vardır.)

OAuth İçerik Ekranını da doldurun

1

GoogleSignInOptions'nu oluştururken, web_client_key dize kaynağını kullanırsınız. Güvenlik nedeniyle, gerçek anahtarı göndermediniz ve bunun yerine 123456789-clientwebapplication.apps.googleusercontent.com. örnek değerini kullandınız.

Bu örnek, postalanan google-services.json'da görünmüyor, dolayısıyla oradaki değerlerle eşleştiremiyorum.

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

değeri

kullanılır olun: değer, bu blokta tanımlanan client_id olmalıdır?

web istemci kimliği almanın conventional waygoogle-services.json dan Google Services Gradle Plugin tarafından oluşturulan dize kaynağı R.string.default_web_client_id, kullanmaktır.Bunu yapamayacağın bir sebep var mı ve kendi dize kaynağını mı tanımlamalı? default_web_client_id kullanmayı denediniz mi? yine de error.then alıyorsanız Firebase tüm SHA-1 Parmak baskılar ekliyorsanız

+0

Evet, dizedeki client_id işlevi google-services.json ile eşleşiyor ve 'default_web_client_id' ile ilgili bilgi sahibiyim. Ayrıca denedi. Ve işe yaramıyor. – Reoxey

+1

Yukarıdaki gibi aynı sorun vardı, ancak yapılandırma ile ilgili sorun değil. ISS sağlayıcıları sorun gibi görünüyor. Farklı ISS sağlayıcıları ile denedim ve o zaman çalışıyor gibi görünüyor. – coder

İlgili konular