Conexion a Facebook. Iniciar sesión en el toque

Tengo una pregunta muy sencilla.

En el tutorial de FB https://developers.facebook.com/docs/mobile/ios/build/ comienza a iniciar sesión dentro didFinishLaunchingWithOptions – justo después del lanzamiento de las aplicaciones.

Necesito iniciar sesión en el toque, luego esperar un callback y envía un mensaje en el muro de FB. Creo que la aplicación de diseño de ejemplo de la aplicación Hackbook es demasiado complicada para este propósito.

¿Cuál es la forma más sencilla de lograrlo?

UPD: He seguido el ejemplo de Hackbook, pero ViewControllers todavía no obtuve un callback :(

yAppDelegate.h:

    #importar #importar "FBConnect.h" @interface yAppDelegate : UIResponder { Facebook *facebook; } @property (fuerte, no atómica) UIWindow *window; @propiedad (no atómica, retener) Facebook *facebook; @fin

yAppDelegate.m:

    #import "yAppDelegate.h" #import "yViewController.h" static NSString* kAppId = @"350435425024264"; @implementación yAppDelegate @synthesize ventana = _ventana; @synthesize facebook; - (BOOL)aplicación:(UIApplication *)aplicación terminóLaunchingWithOptions:(NSDictionary *)launchOptions { yViewController *viewController = [[yViewController alloc] init]; facebook = [[Asignación de Facebook] initWithAppId:kAppId andDelegate:viewController]; NSUserDefaults *predeterminados = [NSUserDefaults estándarUserDefaults]; if ([objetoForKey predeterminado:@"FBAccessTokenKey"] && [objetoForKey predeterminado:@"FBExpirationDateKey"]) { facebook.accessToken = [objetoForKey predeterminado:@"FBAccessTokenKey"]; facebook.expirationDate = [por defecto objectForKey:@"FBExpirationDateKey"]; } devuelve SÍ; } - (void)aplicaciónDidBecomeActive:(UIApplication *)aplicación { [[self facebook] extendAccessTokenIfNeeded]; } - (BOOL)aplicación:(UIApplication *)aplicación handleOpenURL:(NSURL *)url { return [self.facebook handleOpenURL:url]; } - (BOOL)aplicación:(UIApplication *)aplicación openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication anotación:(id)anotación { return [self.facebook handleOpenURL:url]; }

yViewController.h:

    #importar #importar "FBConnect.h" @interface yViewController : UIViewController { NSArray *permisos; } @propiedad (no atómica, retener) NSArray *permisos; @fin

yViewController.m

    #import "yViewController.h" #import "yAppDelegate.h" #import "FBConnect.h" @interface yViewController () @end @implementation yViewController @synthesize permisos; - (IBAction)buttonPressed:(UIButton *)sender { NSLog(@"¡Botón presionado!"); permisos = [[NSArray alloc] initWithObjects:@"offline_access", nil]; yAppDelegate *delegate = (yAppDelegate *)[UIApplication sharedApplication].delegate; if (![[delegado de facebook] isSessionValid]) { [[delegado de facebook] autorización:permisos]; } else { //[self showLoggedIn]; } NSLog(@"iniciar sesión!!"); } - (void)viewDidLoad { [super viewDidLoad]; // Realice cualquier configuración adicional después de cargar la vista, normalmente desde un plumín.
 } - (void)viewDidUnload { [super viewDidUnload]; // Libera cualquier subvista retenida de la vista principal.
 } - (BOOL) debería autorrotar a la orientación de la interfaz: (Orientación de la interfaz de la interfaz de usuario) Orientación de la interfaz { return (Orientación de la interfaz! = Orientación de la interfaz de la interfaz de usuario Retrato al revés); } #pragma mark - FBSessionDelegate Methods /** * Llamado cuando el usuario ha iniciado sesión correctamente.
 */ - (vacío)fbDidLogin { NSLog(@"inició sesión"); } -(void)fbDidExtendToken:(NSString *)accessToken expira en:(NSDate *)expiresAt { NSLog(@"token extendido"); } /** * Llamado cuando el usuario canceló el diálogo de autorización.
 */ -(void)fbDidNotLogin:(BOOL)cancelado { NSLog(@"fbDidNotLogin"); } /** * Llamado cuando la solicitud de cierre de sesión se ha realizado correctamente.
 */ - (vacío)fbDidLogout { NSLog(@"fbDidLogout"); // Eliminar la información de autorización guardada si existe y // está bien borrarla (cierre de sesión, sesión no válida, aplicación no autorizada) NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [por defecto removeObjectForKey:@"FBAccessTokenKey"]; [por defecto removeObjectForKey:@"FBExpirationDateKey"]; [sincronizar por defecto]; } /** * Llamado cuando la sesión ha expirado.
 */ - (vacío)fbSessionInvalidated { NSLog(@"fbSessionInvalidated"); [self fbDidLogout]; } #pragma mark - FBRequestDelegate Methods /** * Llamado cuando la solicitud de la API de Facebook ha devuelto una respuesta.
 * * Esta devolución de llamada le da acceso a la respuesta sin procesar.  Se llama antes de * (void)request:(FBRequest *)request didLoad:(id)result, * que se pasa al objeto de respuesta analizado.
 */ - (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response { //NSLog(@"respuesta recibida"); } /** * Llamado cuando regresa una solicitud y su respuesta se ha analizado en * un objeto.
 * * El objeto resultante puede ser un diccionario, una matriz o una cadena, según * el formato de la respuesta de la API.  Si necesita acceder a la respuesta sin procesar, * use: * * (void)request:(FBRequest *)request * didReceiveResponse:(NSURLResponse *)response */ - (void)request:(FBRequest *)request didLoad:(id) resultado { NSLog(@"-(void)solicitud"); } /** * Llamado cuando un error impide que la solicitud de la API de Facebook se complete * correctamente.

preguntado el 26 de junio de 12 a las 14:06

1 Respuestas

Hágalo exactamente de la misma manera que muestra el tutorial de FB, simplemente mueva el código de inicio de sesión a un evento de botón o lo que quiera que lo active.

Respondido el 26 de junio de 12 a las 15:06

He intentado eso. Pero en este caso, delegado: auto no funciona, por lo que no puedo recibir una devolución de llamada. - vasili nikolayev

Mantenga el código en el delegado de la aplicación, pero muévalo a un método diferente. Luego, llame a ese método desde lo que sea que esté controlando sus botones. - Dustin

Tampoco se puede devolver la llamada. gist.github.com/2996187, gist.github.com/2996191, gist.github.com/2996196, gist.github.com/2996204. Este es mi código. Es bastante sencillo, pero no puedo hacer que funcione (- vasili nikolayev

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.