No se puede reloginar con las credenciales de Facebook después de cerrar la sesión

Tengo una aplicación de Android que permite a los usuarios iniciar sesión con sus credenciales de Facebook. Una vez que se desconecten por primera vez, no pueden iniciar sesión nuevamente. Después de borrar el permiso de la aplicación de la página de Aplicaciones en la configuración de usuario en el sitio web de Facebook, iniciar sesión funciona correctamente.

Utilizo un LoginButton para iniciar sesión.

Las actividades que necesitan poder acceder a la información de inicio de sesión, amplían esta actividad AuthActivity .

 public class AuthActivity extends Activity { private AuthUtils authUtils; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); authUtils = new AuthUtils(this); authUtils.onCreate(savedInstanceState); } public AuthUtils getAuthUtils() { return authUtils; } @Override public void onStart() { super.onStart(); authUtils.onStart(); } @Override public void onStop() { super.onStop(); authUtils.onStop(); } @Override public void onResume() { super.onResume(); authUtils.onResume(); } @Override public void onPause() { super.onPause(); authUtils.onPause(); } @Override public void onDestroy() { super.onDestroy(); authUtils.onDestroy(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); authUtils.onSaveInstanceState(outState); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); authUtils.onActivityResult(requestCode, resultCode, data); } } 

AuthUtils tienen este aspecto. He eliminado todas las cosas relacionadas con el inicio de sesión de Google+ y todo lo que no tiene nada que ver con el proceso de inicio de sesión, como guardar la información del usuario con mis preferencias de aplicación.

 public class AuthUtils implements ConnectionCallbacks, OnConnectionFailedListener { private final Activity activityContext; private UiLifecycleHelper facebookUiHelper; public AuthUtils(Activity context) { this.activityContext = context; facebookUiHelper = new UiLifecycleHelper(context, facebookStatusCallback); } public void signInFacebook() { LoginButton facebookLoginButton = new LoginButton(activityContext); facebookLoginButton.setReadPermissions(Arrays.asList("email")); facebookLoginButton.performClick(); } public void signOutFacebook() { Session facebookSession = Session.getActiveSession(); if(facebookSession != null) { facebookSession.closeAndClearTokenInformation(); } } private StatusCallback facebookStatusCallback = new StatusCallback() { @Override public void call(final Session session, SessionState state, Exception exception) { if(state.isOpened()) { Request.newMeRequest(session, new GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { String email = ""; if(user.asMap().containsKey("email")) { email = user.getProperty("email").toString(); } else { // ... not related to login } // Some actions here, not related to login. } }); } else if(state.isClosed()) { // ... not related to login } } }; public void onCreate(Bundle savedInstanceState) { facebookUiHelper.onCreate(savedInstanceState); } public void onResume() { facebookUiHelper.onResume(); } public void onPause() { facebookUiHelper.onPause(); } public void onDestroy() { facebookUiHelper.onDestroy(); } public void onSaveInstanceState(Bundle outState) { facebookUiHelper.onSaveInstanceState(outState); } public void onActivityResult(int requestCode, int resultCode, Intent data) { facebookUiHelper.onActivityResult(requestCode, resultCode, data); } } 

One Solution collect form web for “No se puede reloginar con las credenciales de Facebook después de cerrar la sesión”

Tuve el mismo problema, incluso al ejecutar las aplicaciones de ejemplo de Facebook. Resolví esto proporcionando mi clave de firma predeterminada a Facebook: tanto en mi configuración de desarrollador para las aplicaciones de ejemplo en https://developers.facebook.com/settings/developer/sample-app/, como en la configuración de aplicaciones de la plataforma Android .

Facebook sugiere una forma fácil de obtener su clave predeterminada que se puede encontrar en Solución de problemas en https://developers.facebook.com/docs/android/getting-started . El código para hacerlo al ejecutar la aplicación de ejemplo Hello Facebook se proporciona a continuación.

 try { PackageInfo info = getPackageManager().getPackageInfo( "com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (Signature signature : info.signatures) { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(signature.toByteArray()); Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); } } catch (NameNotFoundException e) { } catch (NoSuchAlgorithmException e) { } 

Nota: cuando publicas aplicaciones, no deberías usar la clave predeterminada y generar y firmar aplicaciones con las tuyas propias.

  • ¿Cómo funciona una propiedad '.class'?
  • JUnit4 TextUtils.isEmpty () da un resultado diferente que String.isEmpty ()
  • Manera eficiente de manipular los subprocesos RxJava
  • Envío de la lista de objetos del array entre actividades con Parcelable
  • Libgdx lanzando una excepción en la aplicación helloworld cuando se ejecuta en el emulador
  • ¿Es Android getter / setter interno realmente un olor de código?
  • ¿Qué es "estructura de datos pasiva" en Android / Java?
  • Cómo obtener un icono asociado con una cuenta específica de AccountManager.getAccounts ()
  • ¿Cómo usar JarJar con Android para cambiar nombres de paquetes de tarros externos?
  • Conectando a la base de datos externa - Aplicación de Android
  • ¿Qué podría hacer la carga lenta en android 4.1.X y no en 4.2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.