0

J'essaie d'intégrer google plus signIn dans mon application android.Tous les appels API ainsi que le code fonctionne très bien. Mais je reçois un dialogue inattendu même si je n'ai rien dans ma mise en page xml.Intégrer Google Plus SignIn dans android montre un dialogue inattendu

En outre, j'ai fait tout le processus d'intégration prérequis du site des développeurs de google.

Ci-dessous mon code:

public class GooglePlusActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener { 

private static final String TAG = "GooglePlusMainActivity"; 
private static final int RC_SIGN_IN = 9001; 
private GoogleApiClient mPlusClient; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_google_plus); 

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .build(); 

    mPlusClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 

    signIn(); 

} 

private void signIn() { 
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mPlusClient); 
    startActivityForResult(signInIntent, RC_SIGN_IN); 
} 

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

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
    if (requestCode == RC_SIGN_IN) { 
     GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
     handleSignInResult(result); 
    } 
    finish(); 
} 

private void handleSignInResult(GoogleSignInResult result) { 
    Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
    if (result.isSuccess()) { 
     // Signed in successfully, show authenticated UI. 
     GoogleSignInAccount currentPerson = result.getSignInAccount(); 

     if (currentPerson != null) { 
       Intent intent = new Intent(GooglePlusActivity.this, RegisterActivity.class); 
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       intent.putExtra("socialuserID", currentPerson.getId()); 
       intent.putExtra("userEmail", currentPerson.getEmail()); 
       intent.putExtra("userFname", currentPerson.getDisplayName()); 
       startActivity(intent); 

     } 

    } 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 

}

enter image description here

+0

Logcat? Quel dialogue inattendu? –

+0

@GaurawYadav J'ai joint la capture d'écran montrant ce dialogue. – Anurag

Répondre

2

Suivez attentivement Google Guide d'intégration:

https://developers.google.com/identity/sign-in/android/start-integrating

Vous devez:

  • générer et ajouter dans le répertoire/app le fichier google-services.json

  • dans le gradle de projet ajouter la dépendance:

    dependencies { 
        classpath 'com.google.gms:google-services:2.0.0-alpha6' 
    } 
    
  • dans l'application gradle plug-in ajouter:

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

    et dépendances:

    dependencies { 
        compile 'com.google.android.gms:play-services-auth:8.3.0' 
    } 
    
  • dans onCreate de Créer une activité GoogleApiClient:

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

    Votre activité ont besoin pour mettre en œuvre GoogleApiClient.OnConnectionFailedListener (Android Studio vous remarquerez à ce sujet)

  • dans la mise en page ajouter bouton Se connecter:

    <com.google.android.gms.common.SignInButton 
    android:id="@+id/sign_in_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
    
  • attachez onClickListener au bouton:

    findViewById(R.id.sign_in_button).setOnClickListener(this); 
    

    cela ajoutera l'implémentation de View.OnClickListener à l'activité

  • méthode de création onClick:

    @Override 
    public void onClick(View v) { 
    switch (v.getId()) { 
        case R.id.sign_in_button: 
          signIn(); 
          break; 
    } 
    } 
    
  • méthode create signIn:

    private void signIn() { 
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
        startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 
    
  • méthode add pour attraper l'événement

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        super.onActivityResult(requestCode, resultCode, data); 
    
        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
        if (requestCode == RC_SIGN_IN) { 
         GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
         handleSignInResult(result); 
        } 
    } 
    
  • et enfin gérer SignIn

    private void handleSignInResult(GoogleSignInResult result) { 
        Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
        if (result.isSuccess()) { 
         // Signed in successfully, show authenticated UI. 
         GoogleSignInAccount acct = result.getSignInAccount(); 
         Log.d(TAG, "authenticated " + acct.getDisplayName() + " " + acct.getEmail()); 
        } else { 
         // Signed out, show unauthenticated UI. 
         Log.d(TAG, "unAuthenticated"); 
        } 
    } 
    

exemple ci-dessus fonctionne sans dialogue blanc.

Vous pouvez vous référer à Google Sample à: https://github.com/googlesamples/google-services/blob/master/android/signin/app/src/main/java/com/google/samples/quickstart/signin/SignInActivity.java si vous avez des doutes

+0

Appréciez-le @Fill, mais le même que j'ai mis en œuvre que vous pouvez voir dans mon code, seule la différence est que je n'ai pas ajouté le bouton google signIn. Mais le problème persiste toujours, est-ce une sorte de problème survenant à cause du json généré par google console? – Anurag