Facebook 3.0 Android segundo intento de inicio de sesión devuelve "Estado de sesión cerrado"
Estoy intentando integrar Facebook a mi aplicación de Android. Con el botón de inicio de sesión de Facebook, intenté iniciar sesión. Cuando instalo la aplicación por primera vez, funciona bien y se inicia la sesión correctamente. Cuando me cerré la sesión utilizando ese botón, y luego intentar iniciar sesión nuevamente, muestra el diálogo de permisos pero el estado de devolución de SessionState
se cierra. ¿Alguna sugerencia? Aquí está mi código
public class LoginActivity extends FragmentActivity{ // private Login login; private boolean isResumed = false; private BirthDayComp app; private int Login=0; private int LogOut=1; private int Count=LogOut+1; private boolean loged= false; private Fragment[] fragments = new Fragment[Count]; private UiLifecycleHelper uiHelper; private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login_fragment); uiHelper = new UiLifecycleHelper(this, callback); uiHelper.onCreate(savedInstanceState); FragmentManager fm = getSupportFragmentManager(); fragments[Login]=fm.findFragmentById(R.id.loginfb); fragments[LogOut]=fm.findFragmentById(R.id.logoutfb); FragmentTransaction transaction = fm.beginTransaction(); transaction.commit(); /*if (savedInstanceState == null) { login = new Login(); getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, login) .commit(); } else { login = (Login) getSupportFragmentManager() .findFragmentById(android.R.id.content); }*/ } @Override public void onResume() { super.onResume(); uiHelper.onResume(); isResumed = true; } @Override public void onPause() { super.onPause(); uiHelper.onPause(); /* Session session = Session.getActiveSession(); session.removeCallback(callback);*/ isResumed = false; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // uiHelper.onActivityResult(requestCode, resultCode, data); // super.onActivityResult(requestCode, resultCode, data); Session session = Session.getActiveSession(); int sanitizedRequestCode = requestCode % 0x10000; session.onActivityResult(this, sanitizedRequestCode, resultCode, data); } @Override public void onDestroy() { super.onDestroy(); uiHelper.onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); uiHelper.onSaveInstanceState(outState); } @Override protected void onResumeFragments() { super.onResumeFragments(); Session session = Session.getActiveSession(); if (session != null && session.isOpened()) { // if the session is already open, try to show the selection fragment /*if(app.getFb()!=true){ app.setFb(true); }*/ showFragment(Login, false); } else { // otherwise present the splash screen and ask the user to login. //app.setFb(false); showFragment(Login, false); } } private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (isResumed) { FragmentManager manager = getSupportFragmentManager(); int backStackSize = manager.getBackStackEntryCount(); for (int i = 0; i < backStackSize; i++) { manager.popBackStack(); } // check for the OPENED state instead of session.isOpened() since for the // OPENED_TOKEN_UPDATED state, the selection fragment should already be showing. session=Session.getActiveSession(); state= session.getState(); if (state.equals(SessionState.OPENED)) { this.loged=true; showFragment(Login, false); } else if (state.isClosed()) { this.loged=false; System.gc(); //session.closeAndClearTokenInformation(); // showFragment(Login, false); } } } private void showFragment(int fragmentIndex, boolean addToBackStack) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); for (int i = 0; i < fragments.length; i++) { if (i == fragmentIndex) { transaction.show(fragments[i]); } else { transaction.hide(fragments[i]); } } if (addToBackStack) { transaction.addToBackStack(null); } transaction.commit(); } }
- Subir imagen a facebook desde la unidad
- Android facebook intención de mostrar el perfil con la clase com.facebook.katana.ProfileTabHostActivity no funciona más
- Recuperar foto de perfil con Facebook SDK 3.0 para Android
- Cómo obtener el cumpleaños de usuario de facebook sdk?
- Compartir imagen y texto en Facebook en android
- Cómo recuperar un Facebook-AuthToken de las cuentas guardadas en Android
- Android Facebook SDK - Cómo consultar las notificaciones de Facebook
- Evitar que Facebook Android SDK muestre la contraseña como texto sin formato
- No se puede usar keytool y OpenSSL para Facebook Instalación de Android SDK
- Boolean java.lang.String.equals (java.lang.Object) 'en un error de referencia de objeto nulo en ParseFacebookUtils.logInWithReadPermissionsBackground
- Unity Android usando Facebook SDK, falta Debug Android KeyHash
- Publicar en la pared de Facebook utilizando el API de gráfico no funciona
- Excepción inesperada de nivel superior en Córdoba
- Android: la clave de API sólo se puede especificar una vez duplicados <meta-data>
- Poner espacio entre los botones de Android