您的位置:首页 > 移动开发

iPone,ios移动 app接入Facebook,facebook授权iPhone移动端开发

2012-08-24 17:50 281 查看
一 首先说明下

1:Facebook采用的时Oauth2.0授权

2: 说明下什么是sso

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。对于Facebook的移动应用接入来说,意思就是如果用户手机上安装了facebook官方客户端并登录了,那么我们写的应用,授权facebook时,就不需要输入用户名和密码了,程序里call下facebook打声招呼就行了。这个用户体验是不是很棒~国内的新浪微博好像也快推出sso了~

3:Facebook的sso说明:

a:要实现sso,Facebook客户端的版本要求3.2.3或更高版本。

b:如果用户手机里没有装Facebook客户端或者版本过底,那么SDK将打开safari浏览器,在浏览器中登陆后,skd可以利用safari浏览器的cookie中的access_token.

c:如果程序运行在一个不支持多任务的系统,sdk将弹出一个UIWebView,提示用户登录授权。个人关于Facebook sso的见解:sso用户体验很不错,关于第二点,调用safari浏览器来登录,我觉得很多国内用户都不用safari浏览器,所以这个代码可以在sdk中屏蔽调。如果用户没有装facebook官方客户端的话,就直接弹登录框了~不过国内由于需要翻墙才能上facebook,估计用户也不多,不知到国外用户用safari浏览器的多不多?还是有其他浏览器。

二:准备工作

下载Facebook ios sdk:官方下载地址:http://developers.facebook.com/ios/。官方现在得sdk版本已经是3.0.8了,应该差不了太多。我得sdk是两个月前下载得,我已上传倒csdn资源中,下载地址:http://download.csdn.net/download/wxq888/4522172

三:正式开始

1:把sdk目录下src目录文件导入到工程中

2:在AppDelegate中初始化Facebook对象 在appDelegate得头文件和m文件中加入下面得代码

#import "FBConnect.h"

Facebook *facebook;

@property (nonatomic, retain) Facebook *facebook;

@synthesize facebook;

facebook = [[Facebook alloc] initWithAppId:your asp id andDelegate:nil];

3:实现sso回调代码,也就是当应用程序委托Facebook官方客户端授权后,官方客户端要回调应用程序传回access token。在appDelegate中添加下面代码:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

return [self.facebook handleOpenURL:url];

}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

return [self.facebook handleOpenURL:url];

}

4:在Info.plist文件中增加sso回调url,以告诉Facebook官方客户端该调用谁。如图所示,回调地址格式是fb.your_app_id.需要修改为自己申请得appid。



5: 调用sdk api登录 AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [[delegate facebook] authorize:permissions];

6:如果登录没有问题,就会回调Facebook.m得 (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate 这个函数,你需要在这个函数中处理授权成功代码。保存token值等操作。如果有错误会调用- (void)fbDialogNotLogin:(BOOL)cancelled 这个函数。

7:利用skd调用其他api。比如请求用户资料。 需要调用:[self requestWithGraphPath:@"me" andDelegate:self];。其他api具体需要调用哪个请参看官方文档。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: