2017-11-18 2 views
0

Ich habe die Google Anmeldung mit Firebase für eine Android-Anwendung implementiert. Ich habe die offizielle Anleitung (https://firebase.google.com/docs/auth/android/google-signin) gefolgt, ich habe die Einstellungen mit dem Debug-und Release-HA-1-Fingerabdruck aktualisiert und ich empfange den gleichen Fehler. Die Debug-Version funktioniert gut, aber die Release-Version funktioniert nicht.Google Login schlägt auf Android mit Code DEVELOPTEL_ERROR fehl, auch mit SHA1 richtig

Ich betreibe den Befehl

keytool -exportcert -Liste -v -alias {my-key-name} -keystore {path-to-Produktion-Schlüsselspeicher}

für meine Produktion Schlüsselspeicher, die eine Ich benutze, um meine .apk zu signieren, wenn Sie es bereitstellen, ich habe das Sha1 zu den Firebase-Einstellungen der Anwendungen hinzugefügt und ich erhalte immer noch den Fehler.

Dies ist die Klasse, die die Authentifizierung

class FirebaseAuthenticator(private val activity: AppCompatActivity, private val onAuthCompleteListener: OnAuthCompleteListener): Authentication, FacebookCallback<LoginResult>, GoogleApiClient.OnConnectionFailedListener { 

private val mGoogleApiClient: GoogleApiClient 
private val callbackManager: CallbackManager = CallbackManager.Factory.create() 

override var isPerformingLogin: Boolean = false 

private val firebaseAuthCompleteListener = object: OnCompleteListener<AuthResult> { 
    override fun onComplete(task: Task<AuthResult>) { 
     if (task.isSuccessful) { 
      val user = FirebaseAuth.getInstance().currentUser!! 
      FirebaseDataAccess._instance.saveUser(FirebaseMapper.mapToUser(user), { exc, _ -> 
       isPerformingLogin = false 
       when(exc) { 
        null -> { 
         onAuthCompleteListener.onAuthComplete(null, FirebaseSession._instance) 
        } 
        else -> { 
         FirebaseSession._instance.signOut() 
         onAuthCompleteListener.onAuthComplete(exc, null) 
        } 
       } 
      }) 

     } else { 
      isPerformingLogin = false 
      onAuthCompleteListener.onAuthComplete(task.exception, null) 
     } 
    } 
} 

init { 

    LoginManager.getInstance().registerCallback(callbackManager, this) 
    val webId = activity.getString(R.string.default_web_client_id) 
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestIdToken(webId) 
      .requestEmail() 
      .build() 

    mGoogleApiClient = GoogleApiClient.Builder(activity) 
      .enableAutoManage(activity /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build() 
} 

override fun loginWithFacebook() { 
    isPerformingLogin = true 
    LoginManager.getInstance().logInWithReadPermissions(activity, Arrays.asList("public_profile", "user_friends", "email")) 
} 

override fun loginWithGoogle() { 
    isPerformingLogin = true 
    val signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient) 
    activity.startActivityForResult(signInIntent, RC_SIGN_IN) 
} 

override fun loginWithEmail(email: String, password: String) { 
    isPerformingLogin = true 
    FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password) 
      .addOnCompleteListener(activity, firebaseAuthCompleteListener) 
} 

override fun onSuccess(loginResult: LoginResult) { 
    val credential = FacebookAuthProvider.getCredential(loginResult.accessToken.token) 
    authWithCredential(credential) 
} 

override fun onError(error: FacebookException) { 
    isPerformingLogin = false 
    onAuthCompleteListener.onAuthComplete(error, null) 
} 

override fun onCancel() { 
    isPerformingLogin = false 
    onAuthCompleteListener.onAuthComplete(null, null) 
} 

override fun onConnectionFailed(connResult: ConnectionResult) { 
    isPerformingLogin = false 
    onAuthCompleteListener.onAuthComplete(Exception(connResult.errorMessage), null); 
} 

override fun onActivityResultCallback(requestCode: Int, resultCode: Int, data: Intent) { 
    callbackManager.onActivityResult(requestCode, resultCode, data) 

    if (requestCode == RC_SIGN_IN) { 
     val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data) 
     if (result.isSuccess) { 
      // Google Sign In was successful, authenticate with Firebase 
      val credential = GoogleAuthProvider.getCredential(result.signInAccount!!.idToken, null) 
      authWithCredential(credential) 

     } else { 
      isPerformingLogin = false 
      onAuthCompleteListener.onAuthComplete(Exception(result.status.toString()), null); 
     } 
    } 
} 

private fun authWithCredential(credential: AuthCredential) { 
    FirebaseAuth.getInstance().signInWithCredential(credential) 
      .addOnCompleteListener(activity, firebaseAuthCompleteListener) 
} 

companion object { 
    private val RC_SIGN_IN = 9001 
} 

}

das ist meine meine App-Build-Datei

apply plugin: 'com.android.application' 
 
apply plugin: 'kotlin-android' 
 
apply plugin: 'io.fabric' 
 

 

 
android { 
 
    signingConfigs { 
 
     p2s_keystore { 
 
      keyAlias 'myalias' 
 
      keyPassword 'myKeyPassword' 
 
      storeFile file('/path to my keystore') 
 
      storePassword 'myStorePassword' 
 
     } 
 
    } 
 
    compileSdkVersion 26 
 
    buildToolsVersion '26.0.2' 
 
    defaultConfig { 
 
     applicationId "com.app.play2sell" 
 
     minSdkVersion 16 
 
     targetSdkVersion 25 
 
     versionCode 8 
 
     versionName "1.2.8" 
 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
 
     vectorDrawables.useSupportLibrary = true 
 
     multiDexEnabled true 
 
     signingConfig signingConfigs.p2s_keystore 
 
    } 
 
    buildTypes { 
 
     release { 
 
      minifyEnabled false 
 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
 
      signingConfig signingConfigs.p2s_keystore 
 
      debuggable true 
 
     } 
 
    } 
 
    productFlavors { 
 
    } 
 
} 
 

 
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:26.1.0' 
 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
 
    compile 'com.android.support:design:26.1.0' 
 
    compile 'com.squareup.picasso:picasso:2.5.2' 
 
    compile 'com.facebook.android:facebook-android-sdk:[4,5)' 
 
    compile 'com.google.firebase:firebase-database:11.2.0' 
 
    compile 'com.github.PhilJay:MPAndroidChart:v3.0.2' 
 
    compile 'com.google.android.gms:play-services:11.2.0' 
 
    compile 'com.google.firebase:firebase-auth:11.2.0' 
 
    compile 'com.google.android.gms:play-services-auth:11.2.0' 
 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
 
     transitive = true 
 
    } 
 
    testCompile 'junit:junit:4.12' 
 
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 
 
} 
 

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

 
apply plugin: 'kotlin-android-extensions' 
 

 
repositories { 
 
    mavenCentral() 
 
}

Ich bin sicher, dass ich das haben, macht Korrekte SHA1 meines Keystore-Signatur-Zertifikats fizieren auf der Konsole. Ich habe es hunderte Male überprüft. Ich bin mir auch sicher, dass ich meine Anwendung mit dem Keystore signiere, den ich verwendet habe, um den auf der Firebase-Konsole gespeicherten SHA1 zu generieren.

Ich habe auch die neueste Version der Datei google-services.json auf mein Android-Projekt heruntergeladen.

Hat jemand eine Vorstellung davon, warum ich weiterhin den DEVELOPER_ERROR im Statuscode meiner Aktivität erhalte, wenn ich versuche, mich mit Google anzumelden.

Vielen Dank im Voraus

Antwort

0

So war das Problem, dass ich Google App Signing Wiedergabe aktiviert. Ich habe das nicht bemerkt, weil ich seit einiger Zeit meine App hochgeladen habe. Alles, was ich tun musste, war, die von Google Play App Signing generierte SHA1 in meine Firebase-Konsole aufzunehmen und es funktionierte gut.

Verwandte Themen