最近摸摸 facebook-ios-sdk,發現它已經更新到 3.1,且從 3.0 開始架構有不少的變化,像是要求權限時,開始分 read 跟 write 的要求,例如登入時只能要求 read 或 write 類權限,而不能一次要求 read + write 權限,接著要再要求另一類權限時,可以在用 reauthorizeWithPermissions:defaultAudience:completionHandler: 再繼續要求。雖然 Facebook 有打包好一份 FacebookSDK 可下載到 Mac OS X 安裝使用,但有些好玩的架構 hack 則需要 source code (不見得要改 source code,可能是擴充架構時需要參考),所以就來編譯吧!編譯的概念很簡單,一種是編 app 時,要能夠找到 FacebookSDK header,另一種則是 link 時要能找到 FacebookSDK。
[Xcode] -> [Project] -> [iOS Application] -> [Empty Application] -> 隨便一個名字(此例StudyBuildFBSDK(由於個人習慣自己管記憶體,所以我就取消 Automatic Reference Counting)
接著從 github.com 下載 facebook-ios-sdk.git 回來,在此擺在 ~/facebook-ios-sdk-3.1
接著就用 Finder 開起 facebook-ios-sdk-3.1 後,把 src/facebook-ios-sdk.xcodeproj 拖到 StudyBuildFBSDK 裡頭
接著依照 Facebook 的教學,點選 TARGETS-> StudyBuildFBSDK -> Build Phases -> Link Binrary With Libraries 中,在把需要的系統函式庫選一選(AdSupport, Accounts, Social 和 libfacebook_ios_sdk.a),接著再到 TARGETS-> StudyBuildFBSDK -> Build Settings 搜尋 other link -> 新增 -lsqlite3.0
接下來則是新增 header search 位置,即 ~/facebook-ios-sdk-3.1,TARGETS-> StudyBuildFBSDK -> Build Settings 搜尋 header search -> 新增 ~/facebook-ios-sdk-3.1 並設為 recursive
如此一來應該就可以編譯成功了 :P 例如在 AppDelegate.m 中添加 FacebookSDK 相關程式碼:
#import "facebook.h"
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
if( [[FBSession activeSession] state] == FBSessionStateCreatedTokenLoaded ) {
NSLog(@"test in");
}
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
此外,執行還是會出錯,因為還要去 Supporting Files -> SutdyBuildFBSDK-info.plist 中,新增 FacebookAppID 後才能確保程式可以跑,只是還要補上額外的東西才能正式使用囉(參考 Facebook 教學)。
大大您好~~可否有一個demo展示...例如登入之後取回id或是name的部分,顯示在畫面上來!小弟這部分困惱好久,網路上好多版本弄到好亂><"...希望大大幫幫忙!感恩!
回覆刪除Note: 把玩 3.5.2 已改成大寫 Facebook.h 囉
回覆刪除