第三步就是要實現單一登入。
實現單一登入時,注意驗證方式有幾種不同的機制:
- 如果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;
@end
ViewController.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]。
這樣就完工啦!可以測測看啦!
 
沒有留言:
張貼留言