2017-10-14 5 views
0

J'ai intégré une connexion google dans mon application. quand je teste par débogage USB, il semble bien fonctionner sur plusieurs appareils, la connexion google fonctionne très bien, car l'utilisateur peut accéder à l'application. Lorsque je crée une apk signée, avec la signature V1 et V2, personne ne peut s'authentifier auprès du serveur, pas même moi, qui a créé le lien d'authentification en premier lieu.Google Connexion ne fonctionne pas dans Signé APK

c'est le code responsable de l'authentification:

public class MainActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener { 

private LinearLayout prof_section; 
private Button SignOut; 
private SignInButton SignIn; 
private TextView Name,Email; 
private ImageView Prof_Picture; 
private Button continueBut; 
String personName; 
private static final int REQ_CODE = 9001; 
String name; 
Intent nameSave; 
private GoogleApiClient mGoogleApiClient; 

public static final String prefsName = "com.personal.mayankthakur.myapplication"; 


private static final String TAG = "MainActivity"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(com.personal.mayankthakur.myapplication.R.layout.activity_main); 

    prof_section = (LinearLayout) findViewById(com.personal.mayankthakur.myapplication.R.id.prof_section); 
    SignOut = (Button) findViewById(com.personal.mayankthakur.myapplication.R.id.logoutBtn); 
    SignIn = (SignInButton) findViewById(com.personal.mayankthakur.myapplication.R.id.gSignIn); 
    Name = (TextView) findViewById(com.personal.mayankthakur.myapplication.R.id.nameSpace); 
    Email = (TextView) findViewById(com.personal.mayankthakur.myapplication.R.id.emailSpace); 
    Prof_Picture = (ImageView) findViewById(com.personal.mayankthakur.myapplication.R.id.profilePicture); 
    continueBut = (Button) findViewById(com.personal.mayankthakur.myapplication.R.id.button2); 
    continueBut.setOnClickListener(this); 
    SignOut.setOnClickListener(this); 
    SignIn.setOnClickListener(this) ; 
    prof_section.setVisibility(View.GONE); 
    continueBut.setVisibility(View.GONE); 

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


} 

@Override 
public void onConnectionFailed (@NonNull ConnectionResult connectionResult){ 

} 
private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
    startActivityForResult(signInIntent, REQ_CODE); 
} 
private void signOut(){ 

    Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() { 
     @Override 
     public void onResult(@NonNull Status status) { 
      updateUI(false); 
     } 
    }); 

} 
private void handleReuslt(GoogleSignInResult result){ 

    if(result.isSuccess()) 
    { 
     GoogleSignInAccount acct = result.getSignInAccount(); 
     personName = acct.getDisplayName(); 

     // This is the shared preference 
     SharedPreferences.Editor prefs = getSharedPreferences(prefsName, MODE_PRIVATE).edit(); 
     //adding a value to the preference 
     prefs.putString("personName", personName); 
     prefs.apply(); 

     String personEmail = acct.getEmail(); 

     // This is the shared preference 
     SharedPreferences.Editor emailPrefs = getSharedPreferences(prefsName, MODE_PRIVATE).edit(); 
     //adding a value to the preference 
     emailPrefs.putString("personEmail", personEmail); 
     emailPrefs.apply(); 

     String imgUrl = acct.getPhotoUrl().toString(); 
     Uri personPhoto = acct.getPhotoUrl(); 
     Name.setText(personName); 
     Email.setText(personEmail); 
     Glide.with(this).load(imgUrl).into(Prof_Picture); 
     updateUI(true); 
    } 
    else 
    { 
     updateUI(false); 
    } 

} 
private void updateUI(boolean isLogin){ 

    if(isLogin) 
    { 
     prof_section.setVisibility(View.VISIBLE); 
     SignIn.setVisibility(View.GONE); 
     continueBut.setVisibility(View.VISIBLE); 

    } 

    else 
    { 
     prof_section.setVisibility(View.GONE); 
     SignIn.setVisibility(View.VISIBLE); 
    } 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode == REQ_CODE) 
    { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleReuslt(result); 
    } 


} 
@Override 
public void onClick (View v) { 


    switch (v.getId()) { 

     case com.personal.mayankthakur.myapplication.R.id.gSignIn: 
      signIn(); 

      break; 

     case com.personal.mayankthakur.myapplication.R.id.logoutBtn: 
      signOut(); 

      break; 
     case com.personal.mayankthakur.myapplication.R.id.button2: 

      nameSave = new Intent(MainActivity.this, Activity2.class); 
      MainActivity.this.startActivity(nameSave); 
    } 


} 
} 

ceci est la première fois que tente de publier une application sur Google Play, et toute aide serait grandement appréciée!

+0

Avez-vous un message d'erreur sur la console? –

+0

Avez-vous ajouté la signature de magasin de clés à la console de développeur? –

Répondre

0

Était votre build variantdebug car il doit être défini sur release.

0

Ajoutez la somme de contrôle SHA-1 de la clé de version dans la base de données Firebase/google.

Première génération de clé en utilisant la commande suivante:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME 

copie ensuite la somme de contrôle SHA-1 et aller à:

Firebase Console> Votre projet> Paramètres de l'application> Ajouter empreintes digitales

Puis sauvegardez la somme de contrôle et vous êtes prêt à partir.