IOS客户端接入Facebook,SSO授权
原貼地址:http://blog.csdn.net/wxq888/article/details/7905003
一?首先說明下:
1:Facebook采用的時(shí)Oauth2.0授權(quán)
2: 說明下什么是sso
? ? ? ? SSO英文全稱Single Sign On,單點(diǎn)登錄。SSO是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。對(duì)于Facebook的移動(dòng)應(yīng)用接入來說,意思就是如果用戶手機(jī)上安裝了facebook官方客戶端并登錄了,那么我們寫的應(yīng)用,授權(quán)facebook時(shí),就不需要輸入用戶名和密碼了,程序里call下facebook打聲招呼就行了。這個(gè)用戶體驗(yàn)是不是很棒~國內(nèi)的新浪微博好像也快推出sso了~?
3:Facebook的sso說明:
? ? ?a:要實(shí)現(xiàn)sso,Facebook客戶端的版本要求3.2.3或更高版本。
? ? ?b:如果用戶手機(jī)里沒有裝Facebook客戶端或者版本過底,那么SDK將打開safari瀏覽器,在瀏覽器中登陸后,skd可以利用safari瀏覽器的cookie中的access_token.
? ? ?c:如果程序運(yùn)行在一個(gè)不支持多任務(wù)的系統(tǒng),sdk將彈出一個(gè)UIWebView,提示用戶登錄授權(quán)。個(gè)人關(guān)于Facebook sso的見解:sso用戶體驗(yàn)很不錯(cuò),關(guān)于第二點(diǎn),調(diào)用safari瀏覽器來登錄,我覺得很多國內(nèi)用戶都不用safari瀏覽器,所以這個(gè)代碼可以在sdk中屏蔽調(diào)。如果用戶沒有裝facebook官方客戶端的話,就直接彈登錄框了~不過國內(nèi)由于需要翻墻才能上facebook,估計(jì)用戶也不多,不知到國外用戶用safari瀏覽器的多不多?還是有其他瀏覽器。
二:準(zhǔn)備工作:
?下載Facebook ios sdk:官方下載地址:http://developers.facebook.com/ios/。官方現(xiàn)在得sdk版本已經(jīng)是3.0.8了,應(yīng)該差不了太多。我得sdk是兩個(gè)月前下載得,我已上傳倒csdn資源中,下載地址:http://download.csdn.net/download/wxq888/4522172
三:正式開始
1:把sdk目錄下src目錄文件導(dǎo)入到工程中
2:在AppDelegate中初始化Facebook對(duì)象 在appDelegate得頭文件和m文件中加入下面得代碼
#import "FBConnect.h"
Facebook *facebook;
@property (nonatomic, retain) Facebook *facebook;
@synthesize facebook;
facebook = [[Facebook alloc] initWithAppId:your asp id andDelegate:nil];?
3:實(shí)現(xiàn)sso回調(diào)代碼,也就是當(dāng)應(yīng)用程序委托Facebook官方客戶端授權(quán)后,官方客戶端要回調(diào)應(yīng)用程序傳回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回調(diào)url,以告訴Facebook官方客戶端該調(diào)用誰。如圖所示,回調(diào)地址格式是fb.your_app_id.需要修改為自己申請(qǐng)得appid。
5: 調(diào)用sdk api登錄 AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [[delegate facebook] authorize:permissions];
6:如果登錄沒有問題,就會(huì)回調(diào)Facebook.m得 (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate 這個(gè)函數(shù),你需要在這個(gè)函數(shù)中處理授權(quán)成功代碼。保存token值等操作。如果有錯(cuò)誤會(huì)調(diào)用- (void)fbDialogNotLogin:(BOOL)cancelled 這個(gè)函數(shù)。
7:利用skd調(diào)用其他api。比如請(qǐng)求用戶資料。 需要調(diào)用:[self requestWithGraphPath:@"me" andDelegate:self];。其他api具體需要調(diào)用哪個(gè)請(qǐng)參看官方文檔。
總結(jié)
以上是生活随笔為你收集整理的IOS客户端接入Facebook,SSO授权的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CS1.6参数设置
- 下一篇: 4、Oracle使用网络管理工具—Net