Logo após escrever um post sobre como utilizar a API do Facebook no Android, tive que fazer o mesmo para o iOS, então resolvi compartilhar com vocês.
Registrando a aplicação do Facebook
Devemos primeiro criar/registrar nossa aplicação no Facebook. Para tal, acesse: https://developers.facebook.com/apps, faça o login com uma conta do facebook (aconselho criar uma conta de teste) e clique na opção Create New App. A janela abaixo será exibida:
Digite o nome da aplicação e clique em Continue.
Nota: Por questões de segurança o Facebook pede que você coloque uma informação que te identifique. No meu caso, eu tive que preencher o número do meu celular. Uma vez que cadastrei, o Facebook envia um código de ativação via SMS. Clique no link que foi enviado para o seu aparelho ou digite o código de confirmação para concluir o seu cadastro.
Uma vez que a aplicação está cadastrada, habilite a opção Native iOS App.
Preencha o campo iOS Bundle ID com o ID da sua aplicação (configurado no Xcode) e habilite as opções Configured for iOS SSO e iOS Native Deep Linking.
Importanto o projeto do Facebook SDK
O código do Facebook SDK está disponível em um repositório GIT, mas você pode baixá-lo no formato ZIP. Acesse https://github.com/facebook/facebook-ios-sdk e selecione a opção Download this repository as a ZIP file". Terminado o download, descompacte onde desejar.Após descompactar, abra o terminal para gerar a lib que nos permitirá utilizar o Automatic Reference Counting (ARC) recurso do iOS que nos permite delegar para o sistema operacional limpeza dos objetos da memória. Digite o seguinte comando no diretório onde você descompactou o facebook SDK:
./scripts/build_facebook_ios_sdk_static_lib.sh
Será gerado o diretório lib/facebook. Você irá copiar esse diretório para o diretório da sua aplicação.
Criando o projeto
Crie um novo projeto no Xcode do tipo Single View Application e clique em Next. Preencha no nome do projeto e o company identifier de modo que juntos formem o campo iOS Bundle ID utilizado no cadastro do Facebook. Conclua o assistente de criação do projeto. Adicione a pasta lib que foi gerada na seção anterior para seu projeto (botão direito sobre o projeto, Add files).
Abra o delegate da sua aplicação e deixe-o conforme abaixo:
#import <UIKit/UIKit.h> #import "FBConnect.h" @interface NGAppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) Facebook *facebook; @end
#import "NGAppDelegate.h"
@implementation NGAppDelegate
@synthesize window = _window;
@synthesize facebook;
// Método que trata a autenticação após o facebook
// validar o login e senha do usuário no browser
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [facebook handleOpenURL:url];
}
// *** Métodos do Protocolo FBSessionDelegate
// Salva o accessToken e data de expirar
-(void)fbDidLogin {
NSUserDefaults *defaults =
[NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken]
forKey:@"FBAccessToken"];
[defaults setObject:[facebook expirationDate]
forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
// Ao fazer logout, apaga o accessToken
-(void)fbDidLogout {
NSUserDefaults *defaults =
[NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"FBAccessToken"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
-(void)fbDidNotLogin:(BOOL)cancelled {}
-(void)fbDidExtendToken:(NSString *)accessToken
expiresAt:(NSDate *)expiresAt{}
- (void)fbSessionInvalidated {}
// *** Métodos de UIApplicationDelegate ***
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
facebook = [[Facebook alloc]
initWithAppId:@"ID_SUA_APP" andDelegate:self];
// Carregar o AccessToken pra ver se está logado
NSUserDefaults *defaults =
[NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessToken"] &&
[defaults objectForKey:@"FBExpirationDateKey"]){
facebook.accessToken =
[defaults objectForKey:@"FBAccessToken"];
facebook.expirationDate =
[defaults objectForKey:@"FBExpirationDateKey"];
}
// Se não estiver logado, exibe a tela de login
if (![facebook isSessionValid]) {
NSArray *permissions = [NSArray
arrayWithObjects:@"publish_stream", nil];
[facebook authorize:permissions];
}
return YES;
}
Agora vamos mexer no ViewController
#import <UIKit/UIKit.h>
#import "Facebook.h"
@interface NGViewController : UIViewController
<FBRequestDelegate> {
Facebook *facebook;
}
@property (weak, nonatomic) IBOutlet
UITextField *txtMensagem;
- (IBAction)updateStatusClick:(id)sender;
- (IBAction)logoutClick:(id)sender;
@end
#import "NGViewController.h"
#import "NGAppDelegate.h"
@implementation NGViewController
@synthesize txtMensagem;
- (void)viewDidLoad
{
[super viewDidLoad];
NGAppDelegate *delegate = (NGAppDelegate *)
[UIApplication sharedApplication].delegate;
facebook = delegate.facebook;
}
- (void)viewDidUnload
{
[self setTxtMensagem:nil];
[super viewDidUnload];
facebook = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation !=
UIInterfaceOrientationPortraitUpsideDown);
}
- (IBAction)updateStatusClick:(id)sender {
NSMutableDictionary *params =
[[NSMutableDictionary alloc]init];
[params setObject:txtMensagem.text
forKey:@"message"];
[facebook requestWithGraphPath:@"me/feed"
andParams:params andHttpMethod:@"POST"
andDelegate:self];
}
- (IBAction)logoutClick:(id)sender {
if (![facebook isSessionValid]) {
NSArray *permissions = [NSArray arrayWithObjects:
@"publish_stream", nil];
[facebook authorize:permissions];
} else {
[facebook logout];
}
}
-(void)request:(FBRequest *)request
didReceiveResponse:(NSURLResponse *)response {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Info" message:response.description
delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alert show];
}
@end
Abra agora o *.plist com o nome da sua aplicação no modo XML e adicone o trecho abaixo dentro da tag <dic>:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fbID_SUA_APP</string>
</array>
</dict>
</array>
Arraste uma caixa de texto e ligue com o Outlet txtMensagem. Arraste dois botões e associe o evento Touch Up Inside aos métodos logoutClick e updateStatusClick. Feito isso é só rodar a aplicação:
Pronto! Digite sua mensagem e clique no botão para atualizar o status do facebook.
Qualquer dúvida, deixem seus comentários.
4br4ç05,
nglauber




Nenhum comentário:
Postar um comentário