2011-11-28 18 views
11

Cuando el usuario intenta iniciar sesión en mi aplicación iOS utilizando el inicio de sesión único (SSO) de Facebook Connect, falla varias veces antes de permitir que el usuario inicie sesión en la aplicación. Esto no ocurre siempre, pero ocurre la primera vez que el usuario intenta iniciar sesión usando Facebook.SSO que requiere múltiples intentos para iniciar sesión

Pasos para reproducir:

  1. usuario debe tener la última versión de la aplicación de Facebook para iOS instalado en su iPhone.
  2. En multitarea, asegúrese de que la aplicación de Facebook y su aplicación base estén ambas cerradas.
  3. Toca el botón Conectar con Facebook en tu aplicación base.
  4. Esto abre su aplicación de Facebook y redirige a su aplicación base sin realizar ninguna acción.

comportamiento esperado:

método
  • (void)fbDidLogin debe ser llamado que autenticarse dentro de la aplicación base.

comportamiento real:

  • (void)fbDidNotLogin:(BOOL)cancelled se llama por primera vez a solas.

Respuesta

0

Sólo tiene que evitar files..Just de FBConnect API mirar a ese archivo en el archivo Facebook.m hay un método "authorizeWithFBAppAuth" en este método el código para "otra aplicación abierta" está escrito .you solo necesita comentar ese código y ejecutar su aplicación. No lo redirigirá a la aplicación predeterminada de Facebook instalada en su dispositivo.

+0

Eso es bueno saber, y puede ser lo que tengo que hacer. Espero que haya otra respuesta, porque si el usuario tiene la aplicación, es más probable que ya haya iniciado sesión, imo, y no tendrá que ingresar sus credenciales de Facebook y luego aceptar mi aplicación. –

1

Un muy buen punto de partida sería this link. Ahora puede descargar el nuevo SDK de Facebook y puede integrar este SDK en su aplicación de iOS. El enlace describe la solución paso a paso. NO es necesario utilizar métodos de delegado de inicio de sesión como fbdidlogin, etc.

Puede verificar el tiempo en que el usuario ha iniciado sesión con la ayuda del evento sessionStateChanged.

- (void)sessionStateChanged:(FBSession *)session 
        state:(FBSessionState) state 
        error:(NSError *)error 
{ 
switch (state) { 
    case FBSessionStateOpen: 
     if (!error) { 
      // We have a valid session 
      NSLog(@"User session found"); 
     } 
     break; 
    case FBSessionStateClosed: 
     NSLog(@"session state closed"); 
     break; 
    case FBSessionStateClosedLoginFailed: 
     [FBSession.activeSession closeAndClearTokenInformation]; 
     break; 
    default: 
     break; 
} 

[[NSNotificationCenter defaultCenter] postNotificationName:FBSessionStateChangedNotification 
                object:session]; 
} 

en su controlador de vista del usuario que pueda siguiente condición para comprobar el tiempo que el usuario se registra en:

if (FBSession.activeSession.isOpen) { 
    // your code here 
} 

Todo se describe en el enlace dado.

Cuestiones relacionadas