關於 facebook login 的 code 整理...

33 views
Skip to first unread message

hSATAC

unread,
Apr 1, 2012, 10:46:59 PM4/1/12
to cocoah...@googlegroups.com
Hi All,
不好意思,小弟剛入門 iOS programming 問的問題比較基本
最近正在幫我的 App 加入 facebook login 的功能,都已實作完成
我原本有的登入相關功能都放在 LoginViewController 
然後我按照 facebook-ios-sdk 的範例
把 facebook instance 和 FBSessionDelegate 放在我的 AppDelegate

一些相關 fb login 成功的動作、fblogin 按鈕按下的 method 等等 我還是放在 LoginViewController 裡面
fb login 成功後的動作我寫成 LoginViewController 的 class method 讓 AppDelegate 裡面的 fbDidLogin 去調用
但是我想把登入相關的功能都放在一起
所以本來想把 Facebook initWithDelegate 指到 LoginViewController
但我怕未來還會有其他 facebook 相關的功能

請問這個狀況是否我另開一個 facebook 的 Controller 專門處理 facebook 相關的 delegate 會比較合適?

另外再請教一個小問題
在 AppDelegate 裡面我要調用 class method 只需 [LoginViewController fbLoginProcess]
但如果我想把這個 method 改為 instance method 是否就變成要先 alloc 一個 LoginViewControler 再去 call?
這樣的作法是否會有問題?
謝謝。

JmeHsieh

unread,
Apr 1, 2012, 11:17:15 PM4/1/12
to cocoah...@googlegroups.com
我想像一下"facebook controller"的意思,意思是說希望可以透過facebook controller來發request以及接收response(as a fb delegate)是嗎?
如果是這樣的話你可以試試看這個作法。

AppDelegate 握有 facebook 這個 property
AppDelegate 就是 facebook.sessionDelegate

*既然facebook是AppDelegate的property
那在其他SomeOtherViewController都可用 [(AppDelegate *)[[UIApplication sharedApplication] delegate] facebook]來取得singleton的facebook
便也可以發送request,當然request delegate設成自己當前的viewController就好了

*AppDelegate 當做 facebook 的 sessionDelegate
讓fb登入相關的delegate methods都放在同一個地方
但或許有些狀況例如是:在cViewController要發送facebook request,首先要先檢查session是否valid,所以也會得在cViewController做facebook login的request
但是facebook.sessionDelegate卻不是在cViewController身上。
我的作法是利用 [facebook addObserver:self forKeyPath:@"accessToken" options:NSKeyValueObservingOptionNew context:nil];
那麼在觀察到accessToken有變動時就知道facebook login成功了

希望有幫助到XD
Reply all
Reply to author
Forward
0 new messages