Android facebook sdk no llama a la devolución de llamada después de iniciar sesión

Ayuda,

Estoy tratando de hacer una clase que maneja el inicio de sesión de facebook en mi aplicación. Mi problema es que no funciona en toda la actividad. En esa actividad no llama a la devolución de llamada. Después de que el inicio de sesión y autorizar la vista web de la aplicación se descarte, la llamada de retorno no se dispara. El último estado que se imprimió en Logcat es APERTURA

Aquí está mi código:

public void doLogin() { if ((Session.getActiveSession() == null || !Session.getActiveSession().isOpened())) { List<String> permissions = new ArrayList<String>(); permissions.add("email"); // start Facebook Login openActiveSession(activity, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { Log.d("Sessionstate", state.toString()); if (session.isOpened()) { // make request to the /me API Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if (prgCheckFB.isShowing()) prgCheckFB.dismiss(); if (user != null) { Log.e("facebookid", id); doSomething(user); } } }); } }, permissions); } } private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback callback, List<String> permissions) { Session.OpenRequest openRequest = new Session.OpenRequest(activity) .setPermissions(permissions).setCallback(callback); Session session = new Session.Builder(activity).build(); if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) { Session.setActiveSession(session); session.openForRead(openRequest); return session; } return null; } 

DoSomething es una función que guardará los datos de usuario en una preferencia compartida.

¿Hay algo mal? La función funciona en alguna actividad pero no TODAS las actividades.

Gracias

Tal vez te olvides de manejar los resultados después de iniciar sesión …

Compruebe el método override onActivityResult ..

Porque maneja los resultados de nuevo a MainActivity,

Tal vez esto puede ayudar a su problema ..

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

Actualización 1

Para un uso más nuevo del SDK:

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

Tener el atributo android:noHistory="true" establecido para su actividad de devolución de llamada en el archivo AndroidManifest.xml también resultará con los métodos de devolución de llamada no disparando.

  • No se puede ejecutar con SDK de Facebook incluido
  • Token de acceso eliminado en Facebook Android SDK 4.0
  • Uso del API de logro de Facebook en Android
  • Autenticar usuario móvil contra SDK de Facebook, realizar solicitudes desde la aplicación de servidor
  • Error de Facebook: permitir clave: configurar los hashes de su clave de aplicación en dev.facebook android
  • Expansión de la API de gráficos de Facebook en la aplicación para Android
  • Facebook AppInviteContent: El SDK no se ha inicializado, asegúrese de llamar a FacebookSdk.sdkInitialize () primero
  • Java.lang.RuntimeException: Error al entregar el resultado ResultInfo mientras se registra usando Facebook
  • Nombre del paquete y clase Nombre de la aplicación de Facebook
  • Inicio de sesión de Facebook con Android SDK 3.0 que provoca ANR o no funciona en absoluto
  • Openssl no se reconoce como un comando interno o externo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.