2011年4月14日 星期四

Facebook iOS SDK — 用範例來學習

玩Objective-C跟iOS兩個多禮拜,大概搞懂程式語法跟專案架構後,就想找些範例來練習一下。因為接下來想寫個跟Facebook有關的應用,就找了Facebook iOS SDK來試試。這篇就來紀錄一下一些設定的方法,免得過幾天又忘了。

首先把Facebook iOS SDK下載回來,頁面下方README.mdown可以仔細看看,是這個SDK的使用方法。下載檔案解開後,src資料夾是原始檔,而sample資料夾裡面是一個範例專案。我們先把src資料夾裡面的檔案都複製到一個FBConnect資料夾,然後把裡面的facebook-ios-sdk.xcodeproj這個檔案刪掉,因為不需要。以後要用SDK的時候,就是用這個資料夾的檔案。接著我們開一個新的專案,在輸入專案名稱時記一下Bundle identifie,等等會用到。開好後把剛剛的FBConnect資料夾拖曳到project navigator,這時候會彈出一個視窗:

可以選擇要不要複製這些檔案到專案裡,如果不複製,則是連結到原來的FBConnect資料夾,可以看自己的開發習慣來選擇。

接著先開一個Facebook App.。除了一些基本設定以外,進入編輯設定,左邊選擇Mobile and Devices,然後把我們專案的Bundle identifier輸入到iOS Bundle ID,而iTunes App Store ID因為我們只是測試,還沒有上架,所以先不用填。


開好Facebook App.以後,順便把Application ID複製下來,接著回到iOS專案,找專案的.plist檔,為了讓授權後回來可以找到我們的應用程式,必須要加一個URL Types,這在README.mdown裡面的Authentication and Authorization可以看到設定方法。打開.plist檔,在Key那邊加一個URL Types,展開它,裡面應該有個item0,在item0底下新增一個URL Schemes,再展開它,裡面有個item0,點它的Value,輸入fb[app_id],[app_id]就是我們剛剛開的Facebook App.的Application ID:


接著就可以開始製作UI跟寫程式了。因為還不是很熟iOS,所以乾脆把sample這個範例程式重作一遍,一方面不會寫的時候可以參考,另一方面也可以學習別人寫程式的技巧。這個sample的功能很簡單,一開始有個Label顯示狀態與資料,然後有個 Login/Logout Button 來作登入登出。成功登入後,還會顯示四個Button來做Graph API,Old REST API,Dialog,以及上傳照片等功能,所以這個範例非常值得練習一下。
b110403_4

這個範例只有一個View,絕大部份的程式都在DemoAppViewController裡面,記得輸入kAppId,也就是Facebook Application ID。而DemoAppAppDelegate裡面必須實作
application:handleOpenURL:
這個method,不然授權完回到我們的App.就不會觸發login等相關的動作。另外還有一個FBLoginButton,就是登入/登出的custom button,這裡也可以拿來練習怎麼做custom button,不過記得把sample裡面的FBConnect.bundle複製到我們的專案裡,因為button圖檔在這裡面。其他的部份就請自己看看sample的程式碼了,只要之前有了解Facebook Graph API,那應該都看得懂,連我這初學者都懂啦。程式碼都重寫完後,就可以Run了,如果都沒出錯的話,應該就完成收工啦(廢話)!順道一提,uid = 4竟然出現Mark Zuckerberg的名字,不知道他真的是這個uid,或者這只是測試資料?

以上是新增一個專案重作一遍的流程,如果想直接使用sample那個專案,有個地方的設定還要再加一下,README.mdown也有提到,因為這範例專案是用舊版的Xcode產生的,現在用Xcode 4的話,要在下圖這地方加個i386的項目:
b110413_5

學完這個範例後,要用iOS串Facebook應該不是問題了。不過現在每次進入這個App.要重新登入一次Facebook實在很不方便,README.mdown裡面提到有方法可以讓App.記住Access Token,不過這等我研究出來再來分享吧。

3 則留言:

  1. 當我安裝了Facebook official application,在自己的Facebook app來login,卻自動redirect 去official application,為什麼呢?怎解決?

    請回復至lwk8078@gmail.com....謝~

    回覆刪除
  2. 一加入Facebook ios SDK
    就出現compiler error了
    Apple Mach-O Linker Error
    沒加前run都OK的

    回覆刪除
  3. 我是個剛學IOS的新手,想知道這個Demo的細節,可以給我個詳細的解說或是檔案嗎?

    回覆刪除