FB登入教學與常見問題-iOS-swift

by Codus      2017/07/19 (三)


本文章包含
加入 facebook sdk(cocoapad)
swift串接 facebook sdk
常見問題
範例專案

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

  1. 在FB Developer中建立「應用程式」,取得「應用程式編號」
  2. 在Project中進行設定,並接入SDK,並撰寫程式


建立FB應用程式

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

    點擊顯示示意圖-新增應用程式

    建立應用程式
  3. 點選「Facebook登入」

    點擊顯示示意圖-新增Facebook登入功能

    新增Facebook登入功能
  4. 選擇iOS(選擇後會出現Facebook的完整教學,您也可以跟著做。)

    點擊顯示示意圖-選擇平台-iOS

    選擇平台-iOS
  5. 在「設定」->「基本資料」中點擊「新增平台」,選擇iOS

    點擊顯示示意圖-新增平台

    新增平台
  6. 輸入「套件組合編號」(您的Bundle ID,下個步驟會建立)

    點擊顯示示意圖-輸入套件組合編號

    輸入套件組合編號

如此一來就完成了「FB應用程式」的建立


建立專案並接入SDK

  1. 將專案的套件組合編號(BundleID)填寫至FB開發者後台(建立FB應用程式 步驟6)

    點擊顯示示意圖-查看專案的套件組合編號(BundleID)

    查看專案的套件組合編號(BundleID)
  2. 在plist中輸入資料,包含FacebookAppID、FacebookDisplayName與URL Schemes

    點擊顯示示意圖-填寫plist資料

    plist資料
  3. 接入sdk,可以參考FB官方github:FB Github
    也可以使用pod,
    也可以直接下載frameworkd:FB iOS SDK 下載頁面
    注意:要接入 FBSDKCoreKit.frameworkFBSDKLoginKit.frameworkBolts.framework
  4. 在AppDelegate加入FB程式
  5. 撰寫登入程式碼

常見問題搜集來自stackoverflow的發問

  • 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. 應用程式需要開通此權限:
      一個應用程式預設批准的登入權限有三個:emailpublic_profile(括姓名、大頭貼照、性別和年齡範圍)與user_friends(使用者有在使用此應用程式的朋友名單)
    3. 登入時需要涵蓋該權限:
      在撰寫程式時,需要設定登入的權限,記得加入權限。

範例專案 包含登入、取得Profile(Facebook應用程式是我本人建立測試的)

Github連結