Quiero poner algo de integración de Facebook en mi aplicación. En este punto he logrado iniciar sesión, publicar en amigos muro, recuperar la lista de amigos, etc. Todo está bien excepto una cosa ...Facebook SDK 3.1 iOS: Gestionar el inicio de sesión si el usuario elimina la aplicación de la configuración de Facebook
Si el usuario retira la aplicación de your Facebook settings/Applications y luego ingresa a la aplicación de iOS, el código no reconoce que la aplicación de Facebook se eliminó de la configuración del usuario y asume que está conectado (este es el problema porque si el usuario intenta publicar en el muro de un amigo, la aplicación no hace nada).
A continuación, el usuario cierra la aplicación de iOS y relanza que ... Con este nuevo lanzamiento, la aplicación de iOS "es fija" y detecta que el usuario ya no está en el sistema.
no puedo lograr detectar el momento justo después de que el usuario elimina la aplicación de Facebook desde los ajustes con el fin de llevar el flujo de inicio de sesión para el usuario ...
Aquí está mi código:
en primera escena de mi aplicación ...
if([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded)
{
NSLog(@"Logged in to Facebook");
[self openFacebookSession];
UIAlertView *alertDialog;
alertDialog = [[UIAlertView alloc] initWithTitle:@"Facebook" message:@"You're already logged in to Facebook" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alertDialog show];
[alertDialog release];
return YES;
}
else{
NSLog(@"Not logged in to Facebook"); //Show the login flow
return NO;
}
Este es el código para openFacebookSession
-(void)openFacebookSession
{
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"publish_stream",
nil];
[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
[self sessionStateChanged:session state:status error:error];
}];
}
Código de sessionStateChanged ...
-(void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen: {
NSLog(@"Session opened");
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
if (error) {
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Error"
message:error.localizedDescription
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}
Muchas gracias!
¿Cómo resolvió este problema? – SAHM
No lo he resuelto todavía ...: C – Axort
Esa respuesta me ayudó http://stackoverflow.com/questions/12745235/handle-invalid-accesstoken-with-fbsession-openactivesessionwithreadpermissions-i – michael23