[go: up one dir, main page]

iOS 版 Facebook 登入 - 快速入門

我們已對「限制登入」端點進行變更,現在可以前往 limited.facebook.com 使用

當用戶使用 Facebook 登入您的應用程式,用戶可以將權限授予您的應用程式,讓您能代表用戶擷取資訊或者在 Facebook 執行操作。

下列步驟是將「Facebook 登入」加入 iOS 專案的步驟。

1. 註冊

如果您尚未註冊為開發人員,請先註冊。

註冊

2. 設定開發環境

在使用 iOS 版「Facebook 登入」之前,請先設定開發環境。

使用 Swift 套件管理工具(SPM)

  1. 在 Xcode 中,依序點擊檔案 > Swift 套件 > 新增套件相依性
  2. 在顯示的對話方塊中,輸入儲存庫網址:https://github.com/facebook/facebook-ios-sdk
  3. 版本中選擇移至下一個主要版本,然後選擇預設選項。
  4. 完成提示以選擇要在專案中使用的程式庫。
    如果您想將此套件新增至專案

    允許應用程式使用 Facebook 服務

    FacebookCore

    允許用戶登入應用程式,並讓應用程式要求存取資料的權限

    FacebookLogin

    允許應用程式在 Facebook 上分享內容

    FacebookShare

    允許用戶登入您的應用程式,以啟用互動並推廣社交功能

    FacebookGamingServices

3. 向 Facebook 註冊並配置應用程式

註冊並配置應用程式,以便新增套件識別資料來使用「Facebook 登入」。

套件識別碼應顯示在底下方塊中。如果方塊內是空白的,請在 Xcode 專案的 iOS 應用程式目標中找到套件識別碼,然後將其貼入底下的方塊。

您可以透過設定頁面上的 iOS 區段來變更套件識別碼。

應用程式設定 > 基本 > + 平台 > iOS

4. 設定專案

使用包含您應用程式資料的 XML 程式碼片段來設定 Info.plist 檔案。

整合「Facebook 登入」後,除非停用自動應用程式事件記錄功能,否則系統會自動記錄並蒐集特定應用程式事件,以供事件管理工具使用。尤其在韓國啟用應用程式時,您可選擇停用自動應用程式事件記錄功能,這點需要特別留意。如需深入瞭解系統會蒐集哪些資訊,以及如何停用自動應用程式事件記錄功能,請參閱自動應用程式事件記錄功能

  1. Info.plist 上點擊右鍵,然後選擇以原始碼形式開啟
  2. 複製以下 XML 程式碼片段並貼至檔案主體(<dict>...</dict>)。
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>fbAPP-ID</string>
      </array>
      </dict>
    </array>
    <key>FacebookAppID</key>
    <string>APP-ID</string>
    <key>FacebookClientToken</key>
    <string>CLIENT-TOKEN</string>
    <key>FacebookDisplayName</key>
    <string>APP-NAME</string>
  3. [CFBundleURLSchemes] 索引鍵的 <array><string> 中,將 APP-ID 替換為您的應用程式編號。
  4. FacebookAppID 索引鍵的 <string> 中,將 APP_ID 替換為您的應用程式編號。
  5. FacebookClientToken 索引鍵的 <string> 中,將 CLIENT-TOKEN 替換為在您應用程式主控板中設定 > 進階 > 用戶端權杖下找到的數值。
  6. FacebookDisplayName 索引鍵的 <string> 中,將 APP-NAME 替換為您的應用程式名稱。
  7. 若要使用任何可從某應用程式切換到 Facebook 應用程式的 Facebook 對話方塊(例如:登入、分享、應用程式邀請等等),您應用程式的 Info.plist 也需要執行下列動作:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

    您可以在 Info.plist 中新增 FacebookAutoLogAppEventsEnabled 作為鍵值,直接將應用程式事件的自動蒐集功能設為「true」或「false」。

您的專案必須包含 Keychain Sharing(鑰匙圈分享)功能,才能讓登入在 Mac Catalyst 應用程式中運作。

  1. 設定應用程式目標時,請在「Signing & Capabilities(簽署和功能)」頁籤中選擇「+ Capability(+ 功能)」按鈕。
  2. 找到並選擇 Keychain Sharing 功能。
  3. 確認系統針對目標列出 Keychain Sharing 功能。

5. 連接應用程式委派

以下列程式碼取代 AppDelegate.swift 方法中的程式碼。此程式碼會在應用程式啟動時初始化 SDK,並在您執行「登入」或「分享」動作時,讓 SDK 處理原生 Facebook 應用程式的登入和分享。否則,用戶必須登入 Facebook 才能使用應用程式內瀏覽器進行登入。

// AppDelegate.swift
import UIKit
import FacebookCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {    
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {          
        ApplicationDelegate.shared.application(
            application,
            didFinishLaunchingWithOptions: launchOptions
        )

        return true
    }
          
    func application(
        _ app: UIApplication,
        open url: URL,
        options: [UIApplication.OpenURLOptionsKey : Any] = [:]
    ) -> Bool {
        ApplicationDelegate.shared.application(
            app,
            open: url,
            sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
            annotation: options[UIApplication.OpenURLOptionsKey.annotation]
        )
    }  
}

iOS 13 已將開啟網址功能移至 SceneDelegate。如果您使用的是 iOS 13,請將下列方法新增至 SceneDelegate,這樣登入或分享等操作才能正常運作:

// SceneDelegate.swift
import FacebookCore
  ...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }

    ApplicationDelegate.shared.application(
        UIApplication.shared,
        open: url,
        sourceApplication: nil,
        annotation: [UIApplication.OpenURLOptionsKey.annotation]
    )
}

6. 將 Facebook 登入新增至程式碼

在 iOS 應用程式中使用「Facebook 登入」按鈕。


6a. 將「Facebook 登入」新增至程式碼

若要將 Facebook 登入按鈕加入應用程式,請將下列程式碼片段加入至檢視控制器。

// Add this to the header of your file, e.g. in ViewController.swift 
import FacebookLogin

// Add this to the body
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
  
        let loginButton = FBLoginButton()
        loginButton.center = view.center
        view.addSubview(loginButton)
    }
}

在此階段,您應可執行您的應用程式,並使用「Facebook 登入」按鈕來登入。


6b. 檢查目前的登入狀態

應用程式一次只能有一位用戶登入。我們代表使用 AccessToken.current 登入您應用程式的每位用戶。

LoginManager 會為您設定此權杖,當它設定 AccessToken.current 時,還會自動將其寫入金鑰鏈存放區。

AccessToken 包含可用於識別用戶的 userID

您應該更新檢視控制器,於載入時檢查現有權杖。這麼一來,若用戶已授權給您的應用程式,就能避免再次顯示不必要的登入流程:

override func viewDidLoad() {
    super.viewDidLoad()

    if let token = AccessToken.current,
        !token.isExpired {
        // User is logged in, do work such as go to next view controller.
    }
}

6c. 要求權限

使用「Facebook 登入」時,您的應用程式可以要求提供有關個人資料子集的權限。Facebook 登入需具備進階 public_profile 權限,才能供外部用戶使用。

Facebook 登入按鈕的讀取權限

如需要求其他讀取權限,請在 FBLoginButton 物件設定 permissions 屬性。

// Extend the code sample from 6a. Add Facebook Login to Your Code
// Add to your viewDidLoad method:
loginButton.permissions = ["public_profile", "email"]

用戶會看見您應用程式要求授權的提示。請注意,某些權限將需要「登入審查」。如需權限的詳細資訊,請參閱管理權限

7. 後續步驟

恭喜,您已經將「Facebook 登入」新增至 iOS 應用程式!請務必查看其他說明文件頁面,以取得更多進階指南。

實作資料刪除回呼

實作資料刪除回呼,以回應用戶從 Facebook 刪除其資料的要求。

新增應用程式事件

在應用程式中加入事件,即可檢視分析資料、衡量廣告成效,以及建立用於廣告目標設定的廣告受眾。

進階主題和設定

查看 iOS 應用程式的「Facebook 登入」進階設定。

權限

管理您的應用程式可透過「Facebook 登入」存取的資料。

處理錯誤

查看如何回應 Facebook SDK 傳回的錯誤。

應用程式審查

視您要求使用「Facebook 登入」的用戶所提供的 Facebook 資料而定,您可能需要在應用程式上線前,將應用程式提交審查。

建立您專屬的登入流程

若要建立您專屬的登入流程,請參閱「手動建立登入流程」。