1. 程式人生 > >iPone,ios移動 app接入Facebook,facebook授權iPhone移動端開發

iPone,ios移動 app接入Facebook,facebook授權iPhone移動端開發

首先說明下

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具體需要呼叫哪個請參看官方文件。