2011-01-04 19 views
5

Con la nueva biblioteca de Facebook, el objeto FBSession ha desaparecido. ¿Cómo puedo verificar si el usuario tiene una sesión válida en su dispositivo inmediatamente cuando inicia la aplicación sin avisar a safari o uiwebview?Revisar la sesión de Facebook Connect en IOS

El método [facebook isSessionValid] funciona en acccessToken, pero accessToken se establece cuando la aplicación vuelve de safari (o uiwebview en línea).

¿Es posible verificar la sesión utilizando cookies?

Respuesta

12

Después de un inicio de sesión correcto, que desea guardar el token y la fecha de caducidad de acceso, así:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

Entonces, cuando se carga la aplicación, usted quiere comprobar si hay una salvados modo, al igual esto:

_facebook = [[Facebook alloc] initWithAppId:@"[app_id]"]; 
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 
if (![_facebook isSessionValid]) { 
    [_facebook authorize:_permissions delegate:self]; 
} 
else { 
    [_facebook requestWithGraphPath:@"me" andDelegate:self]; 
} 

Hope this helps!

+0

Sí, creo que este es el método que adoptaré, gracias – MatterGoal

+0

Funciona muy bien. Sin embargo, hay una pérdida de memoria en la línea de inicialización _facebook (no es necesario retener). –

+0

Buen punto, Amir. ¡Ha sido editado! Gracias – donkim

0

Estoy bastante seguro de que debería verificar automáticamente si el usuario ha iniciado sesión, ya sea a través de safari o de la aplicación Facebook iPhone. Si el usuario no está conectado, se le pedirá que use una de las aplicaciones anteriores (el valor predeterminado es safari si la aplicación FB no está instalada, por eso el simulador abre FB en safari).

+0

Gracias, Danny Boy, sí, lo reviso a través de Safari ... pero no necesito pasar de safari/uiwebView, etc. para comprobar si estoy conectado. Ejemplo: Ingresé la primera vez usando safari/uiwebview, cierro la aplicación, luego de volver a la aplicación me gustaría que mi usuario sea reconocido con su nombre y foto de Facebook automáticamente – MatterGoal

+0

El propio objeto de Facebook comprobará si el usuario está inicia sesión usando [self isSessionValid] cuando intenta realizar una acción. Si el usuario no ha iniciado sesión, tomará las medidas adecuadas para iniciar sesión. –

+0

Al observar el código isSessionValid, calculé que verificaba la propiedad accessToken y su tiempo de caducidad. Pero esta propiedad se establece solo después de una acción de inicio de sesión (o una acción de solicitud safari/uiwebview/FBapp). Así que no puedo encontrar una forma de acceder a esta información sin mostrar al menos un cuadro de diálogo FB. – MatterGoal

Cuestiones relacionadas