本文章包含

加入 facebook sdk(cocoapad)

swift串接 facebook sdk

常見問題

範例專案

如果iOS需要接入FB登入功能,有2個步驟

1. 在FB Developer中建立「應用程式」,取得「應用程式編號」

2. 在Project中進行設定,並接入SDK,並撰寫程式

建立FB應用程式

2. 點選「我的應用程式」->「新增應用程式」,輸入「顯示名稱」(顯示名稱會在使用者登入時顯示)。

輸入應用程式「顯示名稱」並回答安全應證。

建立應用程式

3. 點選「Facebook登入」

新增Facebook登入功能

4. 點擊左側側邊欄的「Facebook 登入」->「快速入門」

選擇iOS

(選擇後會出現Facebook的完整教學,您可以跟著做FB教學做,或者繼續往下查看Codus的圖文教學。)

選擇平台-iOS

5. 點擊左側側邊欄的「設定」->「基本資料」中點擊「新增平台」,選擇iOS

新增平台

6. 輸入「套件組合編號」(您的iOS APP的Bundle ID)

輸入套件組合編號

如此一來就完成了 Facebook的應用程式建立

建立專案並接入SDK

請確保 iOS專案的Bundle ID與 Facebook開發者後台填寫的 Bundle ID一致

1. 在plist中輸入資料,包含 FacebookAppID、 FacebookDisplayName與URL Schemes

plist資料

2. iOS專案引入SDK,可以參考 Facebook官方文件,這邊建議使用cocoapods引入。

pod 'FBSDKCoreKit'

pod 'FBSDKLoginKit'

pod 'FBSDKShareKit'

pod 'FBSDKPlacesKit'

3. 在AppDelegate加入FB程式

4. 撰寫登入程式碼

恭喜完成 Facebook登入功能!

常見問題

Q: 登入後可以取得accessToken,但是沒有profile資料


A: 這問題在Android與iOS上都有。

其實使用Facebook只有取得您要求權限的「AccesssToken」,與其使用者id,並不包含任何資料,您必須再去取得Profile才行。詳情可以見「範例專案」的loadCurrentProfile方法。

Q: 取得的使用者id好像跟使用者的id不一樣


A: 這是Facebook的政策,每一個不同的「FB應用程式」所取得的同一個使用者的id會不一樣,稱之為「app-scoped IDs」,意即這個id只有在取得的應用程式中有效。

Q: 無法取得使用者email


A: Facebook只會返回經過驗證的Email,這是開發者無法避免的,甚至是使用者可以隨時註銷給應用程式的權限,因此您無法預期應用程式一定會取得使用者的Email。

Q: 無法取得其他資料,ex: 使用者所在地點


 

A: 要取得使用者的資料,除非是必定存在的既有資料(例如:使用者id),有三個點需要特別注意:

  1. 使用者有在Facebook留下該資料:
    若使用者沒有留下資料,那麼應用程式再怎麼嘗試去取得資料,都會返回nil。
  2. 應用程式需要開通此權限:
    一個應用程式預設批准的登入權限有三個:email與public_profile(括姓名、大頭貼照、性別和年齡範圍)與user_friends(使用者有在使用此應用程式的朋友名單)
  3. 登入時需要涵蓋該權限:
    在撰寫程式時,需要設定登入的權限,記得加入權限。
範例專案Github連結: 包含登入、取得Profile(Facebook應用程式是我本人建立測試的)
FBLINETwitterLinkIn
回部落格