想获取Facebook上的资源,要经历登录帐户、请求数据、接收数据三部分:
从官方SDK所给的Demo程序,我们可以了解到,首先要创建Facebook 对象
static NSString *kAppId = @"450051905053297";
facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:rootVC];
其中,kAppId是注册Facebook后,到Facebook开发者平台申请的appID。(官网有视频说明如何申请:http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/)
Facebook通过此ID来获取你为Facebook开发的程序的信息。
在plist文件中需要添加如下项目:
-(void)loginFacebook:(id)sender
{
FirstFbAppDelegate *delegate = (FirstFbAppDelegate *)[[UIApplication sharedApplication] delegate];
if (![[delegate facebook] isSessionValid])
{
[[delegate facebook] authorize:permissions];//弹出登陆facebook的界面
}
else
{
[self showLoggedIn];//已授权,直接登录
}
}
点击登录按钮,首先判断是否已经授权,若已授权,则直接显示授权后的操作界面。
进入到这个方法: [[delegatefacebook] authorize:permissions];//弹出登陆facebook的界面
可以看到:
- (void)authorize:(NSArray *)permissions
{
self.permissions = permissions;
[self authorizeWithFBAppAuth:YES safariAuth:NO];//
}
第一个参数若为YES,如果你的设备安装了facebook app,那么会打开app,询问你是否授权,若为NO,则在你的程序内弹出页面询问是否授权。
第二个参数若为yes,则在safari浏览器中询问是否授权,否则在你的程序内弹出页面询问是否授权。
FBSessionDelegate是授权和登出需要用到的代理,在使用弹出框询问授权时,账号密码输入完毕收,会回调:
- (void)fbDidLogin;
在这里,你可以做授权后的操作。
在弹出框询问是否授权时,左上角有个按钮,是取消授权的,会调用下面的方法:
-(void)fbDidNotLogin:(BOOL)cancelled;
登出时会调用下面的方法:
- (void)fbDidLogout;
分享内容到facebook会调用下面方法:
- (void)dialog:(NSString *)action
andParams:(NSMutableDictionary *)params
andDelegate:(id <FBDialogDelegate>)delegate;
具体使用可以参考demo和官方文档: