第三步就是要實現單一登入。
實現單一登入時,注意驗證方式有幾種不同的機制:
- 如果App支援多工,而且裝置上安裝了3.2.3 Facebook App
- SDK會開啓App
- 如果App支援多工,但是裝置上沒有安裝了3.2.3 Facebook App
- SDK會開啓一個Safari瀏覽器驗證對話框
- 如果App不支援多工
- SDK使用彈出一個內嵌UIWebView的驗證對話框
所以感覺上應該是比較推薦第一種驗證方式吧!
另外如果你的專案是使用ARC的話記得要將SDK轉換。
將SDK加入專案之後,再來就是要開始實作啦!
ViewController.h
#import "FBConnect.h" @interface ViewController : UIViewController <FBSessionDelegate> { Facebook *facebook; } @property (nonatomic ,retain) Facebook *facebook; @endViewController.m
@synthesize facebook; //將facebook物件在適當的位置建立 facebook = [[Facebook alloc] initWithAppId:@"Your App ID" andDelegate:self]; //由User Default將access token取出 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; } //判斷連線是否有效,如果是無效的,將需要的權限裝載在NSArray中,然後設定facebook授權。 if (![facebook isSessionValid]) { NSArray *permissions = [[NSArray alloc] initWithObjects: @"user_likes", @"read_stream", nil]; [facebook authorize:permissions]; } //再來就是要加入fbDidLogin,用User Default將access token存起來 - (void)fbDidLogin { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; [defaults synchronize]; }AppDelegate.m
// Pre iOS 4.2 support,iOS 4.2之前執行 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [facebook handleOpenURL:url]; } // For iOS 4.2+ support,iOS 4.2之後執行 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [facebook handleOpenURL:url]; }再來就是要修改property list file
開啟App的XXX-Info.plist 建立一筆URL types記錄,在記錄中依序添加 item, URL Schemes, 然後輸入數值fb[YOUR_APP_ID]。
這樣就完工啦!可以測測看啦!
沒有留言:
張貼留言