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);
}