studio integrar instalar crear app android_sdk_version android facebook facebook-android-sdk

integrar - instalar sdk de facebook en android studio



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

Tener el atributo android:noHistory="true" establecido para su actividad de devolución de llamada en el archivo AndroidManifest.xml también dará como resultado que los métodos de devolución de llamada no se activen.

Ayuda,

Estoy tratando de hacer una clase que maneje 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 la aplicación de inicio de sesión y autorización de la vista web se cierre, la devolución de llamada no se activará. 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 del usuario en una preferencia compartida.

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

Gracias


tal vez se olvide de manejar los resultados después de iniciar sesión ...

compruebe el método de anulación en el resultado de actividad .

porque maneja los resultados de regreso 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 el uso de SDK más nuevo:

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