2017-11-18 1 views
0

Androidアプリケーション用にGoogleログインをFirebaseとともに実装しました。私は公式ガイド(https://firebase.google.com/docs/auth/android/google-signin)に従っています。私はデバッグで設定を更新し、HA-1指紋をリリースしました。私は同じエラーを受け取り続けます。デバッグバージョンは正常に動作しますが、リリースバージョンは機能しません。SHA1であってもDEVELOPER_ERRORコードのAndroidでGoogleログインが正しく行われない

私は1つ、私の生産のためのキーストア

のkeytool -list -v -exportcert -alias {私のキー名} {-keystoreパス・ツー・生産・ストア}

のコマンドを実行します私は.apkを配布するときに署名するために使用しますが、アプリケーションのFirebase設定にsha1を追加しましたが、それでもエラーが表示されます。

この

は認証

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 
} 

}

が、これは私の私のアプリのビルドファイルを作成するクラスです

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

私は私が持っていると確信しています私のキーストア証明書certiの正しいSHA1コンソールに入れてください。私は何百回もチェックした。私は、Firebaseコンソールに保存されたSHA1を生成するために使用したキーストアを使用してアプリケーションに署名していることを確信しています。

また、私のAndroidプロジェクトにgoogle-services.jsonファイルの最新バージョンをダウンロードしました。

Googleでログインしようとしたときに、自分の活動結果のステータスコードにDEVELOPER_ERRORの受信を続けている理由が分かりません。だから、問題は、私はGoogleがアプリの署名が有効になって再生持っていたということでした事前

答えて

0

感謝。私はそれが私のアプリをアップロードしてからしばらくだったので、それを実現しませんでした。私がしなければならなかったのは、Google Play App Signingで生成されたSHA1をFirebaseコンソールに組み込むことだけでした。うまくいきました。

関連する問題