Connexion Google ne fonctionne pas

Je suis en train de suivre la documentation de Google pour Google Sign. Avoir un problème étrange quand j'appelle

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent (mGoogleApiClient); startActivityForResult (signInIntent, RC_SIGN_IN); 

Il semble que l'intention a été lancée, mais je ne vois pas le dialogue de sélection de compte . j'utilise

  • Android change et définit les paramètres régionaux par défaut dans l'application
  • Comment obtenir des en-têtes collants / épinglés dans un ExpandableListView?
  • Fonction de zoom et de glissement dans SurfaceView
  • Comment vérifier par programmation si une application est installée ou pas dans Android?
  • Activation des onglets personnalisés Chrome pour la connexion Facebook via Android SDK
  • Le récepteur de diffusion ne fonctionne pas dans ICS si l'application n'est pas démarrée au moins une fois
  • compile "com.google.android.gms:play-services-auth:9.6.1"

    Lorsque je vérifie, googleclient object est connecté, il renvoie true.

    Il fonctionne dans certains périphériques, mais pas sur tous les périphériques (spécialement xiaomi)

    la mise en oeuvre

     @OnClick (R.id.google_singin_button) void signInButtonClicked () { HashMap<String, Object> map = new HashMap<> (); map.put (AllAnalytics.LABEL, AllAnalytics.Label.SIGN_IN_GOOGLE); map.put (AllAnalytics.ACTION, AllAnalytics.Action.CLICK); map.put (AllAnalytics.CATEGORY, AllAnalytics.Category.REGISTRATION_SCREEN); aa.analyticsEventOccur (map); if (null != mGoogleApiClient) { // Log.e(TAG,mGoogleApiClient.isConnected()+""); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent (mGoogleApiClient); 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(Activity.RESULT_CANCELED != resultCode) if (requestCode == RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent (data); handleSignInResult (result); } } @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); mActivity = (RegisterActivity) getActivity (); GoogleSignInOptions gso = new GoogleSignInOptions.Builder (GoogleSignInOptions.DEFAULT_SIGN_IN) .requestServerAuthCode (getString (R.string.google_client_auth), false) .requestEmail () .build (); mGoogleApiClient = new GoogleApiClient.Builder (getContext ()) .enableAutoManage (mActivity , this) .addApi (Auth.GOOGLE_SIGN_IN_API, gso) .build (); } 

    Log Cat

     Class not found when unmarshalling: com.google.android.gms.auth.api.signin.internal.SignInConfiguration java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:309) at java.lang.Class.forName(Class.java:273) at android.os.Parcel.readParcelableCreator(Parcel.java:2281) at android.os.Parcel.readParcelable(Parcel.java:2245) at android.os.Parcel.readValue(Parcel.java:2152) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.containsKey(BaseBundle.java:269) at android.content.Intent.hasExtra(Intent.java:4884) at com.miui.server.XSpaceManagerService.isPublicIntent(XSpaceManagerService.java:174) at com.android.server.am.ActivityStackSupervisorInjector.checkXSpaceControl(ActivityStackSupervisorInjector.java:56) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:897) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3478) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3465) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2245) at android.os.Binder.execTransact(Binder.java:446) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.auth.api.signin.internal.SignInConfiguration" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:309) at java.lang.Class.forName(Class.java:273) at android.os.Parcel.readParcelableCreator(Parcel.java:2281) at android.os.Parcel.readParcelable(Parcel.java:2245) at android.os.Parcel.readValue(Parcel.java:2152) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.containsKey(BaseBundle.java:269) at android.content.Intent.hasExtra(Intent.java:4884) at com.miui.server.XSpaceManagerService.isPublicIntent(XSpaceManagerService.java:174) at com.android.server.am.ActivityStackSupervisorInjector.checkXSpaceControl(ActivityStackSupervisorInjector.java:56) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:897) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3478) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3465) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2245) at android.os.Binder.execTransact(Binder.java:446) Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.auth.api.signin.internal.SignInConfiguration at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 19 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 10-11 23:46:17.873 1387-4537/? E/JavaBinder: *** Uncaught remote exception! (Exceptions are not yet supported across processes.) java.lang.RuntimeException: Parcel android.os.Parcel@33c1f490: Unmarshalling unknown type code 6684783 at offset 320 at android.os.Parcel.readValue(Parcel.java:2228) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.containsKey(BaseBundle.java:269) at android.content.Intent.hasExtra(Intent.java:4884) at com.miui.server.XSpaceManagerService.shouldResolveAgain(XSpaceManagerService.java:145) at com.android.server.am.ActivityStackSupervisorInjector.resolveXSpaceIntent(ActivityStackSupervisorInjector.java:68) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:898) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3478) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3465) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2245) at android.os.Binder.execTransact(Binder.java:446) 10-11 23:46:17.873 1387-4537/? A/ActivityManager: Activity Manager Crash java.lang.RuntimeException: Parcel android.os.Parcel@33c1f490: Unmarshalling unknown type code 6684783 at offset 320 at android.os.Parcel.readValue(Parcel.java:2228) at android.os.Parcel.readArrayMapInternal(Parcel.java:2485) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.containsKey(BaseBundle.java:269) at android.content.Intent.hasExtra(Intent.java:4884) at com.miui.server.XSpaceManagerService.shouldResolveAgain(XSpaceManagerService.java:145) at com.android.server.am.ActivityStackSupervisorInjector.resolveXSpaceIntent(ActivityStackSupervisorInjector.java:68) at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:898) at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:3478) at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:3465) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:140) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2245) at android.os.Binder.execTransact(Binder.java:446) 

    3 Solutions collect form web for “Connexion Google ne fonctionne pas”

    Il suffit de vérifier que votre onActivityResult() est appelé ou non parce que vous avez utilisé Fragment . Donc, vous devez passer le résultat Activity de l'activité au fragment.

    Dans votre RegisterActivity vous devez écrire ceci

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); fragment.onActivityResult(requestCode, resultCode, data); } 

    Et vous recevrez un résultat dans votre Fragment .

    J'espère que cela vous aidera.

    Avez-vous essayé de désactiver ProGuard? Définissez minifyEnabled to false dans votre build.gradle et vérifiez si cela vous aide, votre configuration peut être périmée ou incorrecte.

    De plus, vous pouvez vérifier si votre appareil exécute la version 9.6.1+ des services Google Play.

    Essayez d'implémenter GoogleApiClient.ConnectionCallbacks , GoogleApiClient.OnConnectionFailedListener sur votre activity et essayez le code ci-dessous

     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); google_api_client = new GoogleApiClient.Builder(LoginActivity.this) .addConnectionCallbacks(LoginActivity.this) .addOnConnectionFailedListener(LoginActivity.this) .addApi(Plus.API) .addScope(Plus.SCOPE_PLUS_PROFILE) .addScope(Plus.SCOPE_PLUS_LOGIN) .build(); if (google_api_client.isConnected()) { google_api_client.connect(); } @Override protected void onStart() { super.onStart(); google_api_client.connect(); } @Override protected void onStop() { super.onStop(); if (google_api_client.isConnected()) { google_api_client.disconnect(); } } @Override public void onConnected(@Nullable Bundle bundle) { if (google_api_client.isConnected() && is_gglSignInBtn_clicked) { google_api_client.clearDefaultAccountAndReconnect(); } if (is_gglSignInBtn_clicked) { getProfileInfo(); is_gglSignInBtn_clicked = false; } } @Override public void onConnectionSuspended(int i) { google_api_client.connect(); } private void gPlusSignIn() { if (!google_api_client.isConnecting()) { if (is_gglSignInBtn_clicked && google_api_client.isConnected()) { google_api_client.clearDefaultAccountAndReconnect(); getProfileInfo(); } else { resolveSignInError(); } } } @Override public void onConnectionFailed(@NonNull ConnectionResult result) { if (!result.hasResolution()) { google_api_availability.getErrorDialog(this, result.getErrorCode(), request_code).show(); return; } if (!is_intent_inprogress) { connection_result = result; if (is_gglSignInBtn_clicked) { resolveSignInError(); } } } private void resolveSignInError() { if (connection_result != null) { if (connection_result.hasResolution()) { try { is_intent_inprogress = true; connection_result.startResolutionForResult(this, SIGN_IN_CODE); } catch (IntentSender.SendIntentException e) { is_intent_inprogress = false; google_api_client.connect(); } } } } private void getProfileInfo() { try { mProgressDialog.setMessage("Signing in...."); mProgressDialog.show(); if (Plus.PeopleApi.getCurrentPerson(google_api_client) != null) { Person currentPerson = Plus.PeopleApi.getCurrentPerson(google_api_client); Log.i("googleEmail", "" + (Plus.AccountApi.getAccountName(google_api_client))); email = "" + (Plus.AccountApi.getAccountName(google_api_client)); setPersonalInfo(currentPerson); } else { Toast.makeText(getApplicationContext(), "No Personal info mention", Toast.LENGTH_LONG).show(); finish(); } } catch (Exception e) { e.printStackTrace(); } } private void setPersonalInfo(Person currentPerson) { try { JSONObject googleJsonObject = new JSONObject(currentPerson + ""); familyName = googleJsonObject.getJSONObject("name").optString("familyName"); givenName = googleJsonObject.getJSONObject("name").optString("givenName"); gender = googleJsonObject.optString("gender"); displayName = googleJsonObject.optString("displayName"); googleId = googleJsonObject.optString("id"); imageUrl = "http://res.cloudinary.com/demo/image/gplus/" + googleId + ".jpg"; } catch (JSONException e) { e.printStackTrace(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.