การเข้าสู่ระบบด้วย Facebook สำหรับ iOS - การเริ่มต้นใช้งานอย่างง่าย

เราได้ทำการเปลี่ยนแปลงตำแหน่งข้อมูลสำหรับการเข้าสู่ระบบแบบจำกัดข้อมูล โดยคุณสามารถเข้าถึงได้จาก limited.facebook.com

เมื่อเข้าสู่ระบบแอพของคุณด้วย Facebook ผู้ใช้จะสามารถให้สิทธิ์การอนุญาตแก่แอพเพื่อให้คุณดึงข้อมูลหรือดำเนินการต่างๆ บน Facebook แทนผู้ใช้ได้

ขั้นตอนต่อไปนี้มีไว้เพื่อเพิ่มการเข้าสู่ระบบด้วย Facebook ให้กับโปรเจ็กต์ iOS ของคุณ

1. เข้าสู่ระบบ

โปรดเข้าสู่ระบบ Facebook เพื่อสร้างแอพหรือลงทะเบียนในฐานะผู้พัฒนา

2. ตั้งค่าสภาพแวดล้อมในการพัฒนาของคุณ

ตั้งค่าสภาพแวดล้อมในการพัฒนาของคุณก่อนใช้การเข้าสู่ระบบด้วย Facebook สำหรับ iOS

การใช้โปรแกรมจัดการแพ็คเกจ Swift (SPM)
  1. ใน Xcode ให้คลิกไฟล์ > แพ็คเกจ Swift > เพิ่มส่วนเสริมแพ็คเกจ
  2. ในกล่องโต้ตอบที่ปรากฏขึ้นมา ให้ป้อน URL ที่เก็บข้อมูล: https://github.com/facebook/facebook-ios-sdk
  3. ในส่วนเวอร์ชั่น ให้ป้อนหมายเลขเวอร์ชั่นล่าสุดของ Facebook SDK สำหรับ iOS
  4. ทำตามขั้นตอนที่แจ้งเพื่อเลือกคลังที่ต้องการใช้ในโปรเจ็กต์ของคุณ

3. ลงทะเบียนและกำหนดค่าแอพของคุณกับ Facebook

ลงทะเบียนและกำหนดค่าแอพของคุณเพื่อให้สามารถใช้การเข้าสู่ระบบด้วย Facebook ได้โดยเพิ่มตัวระบุชุดของคุณ

คุณจะต้องเข้าสู่ระบบเพื่อให้ขั้นตอนนี้เสร็จสมบูรณ์

4. กำหนดค่าโปรเจ็กต์ของคุณ

กำหนดค่าไฟล์ Info.plist ด้วยข้อมูลโค้ด XML ที่มีข้อมูลเกี่ยวกับแอพของคุณ

หลังจากใช้การเข้าสู่ระบบด้วย Facebook เหตุการณ์ในแอพบางเหตุการณ์จะได้รับการลงบันทึกและเก็บรวบรวมไว้สำหรับตัวจัดการเหตุการณ์โดยอัตโนมัติ เว้นแต่คุณจะปิดใช้งานการลงบันทึกเหตุการณ์ในแอพอัตโนมัติ โปรดดูรายละเอียดเกี่ยวกับข้อมูลที่จะได้รับการเก็บรวบรวมและวิธีปิดใช้งานการลงบันทึกเหตุการณ์ในแอพอัตโนมัติที่การลงบันทึกเหตุการณ์ในแอพอัตโนมัติ

  1. คลิกขวาที่ Info.plist และเลือก Open As ▸ Source Code
  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. ใน <array><string> ในคีย์ [CFBundleURLSchemes] ให้แทนที่ APP-ID ด้วย ID ของแอพคุณ
  4. ใน <string> ในคีย์ FacebookAppID ให้แทนที่ APP-ID ด้วย ID ของแอพคุณ
  5. ใน <string> ในคีย์ FacebookClientToken ให้แทนที่ CLIENT-TOKEN ด้วยค่าที่พบได้ใน การตั้งค่า > ขั้นสูง > โทเค็นของไคลเอ็นต์ ในแดชบอร์ดของแอพคุณ
  6. ใน <string> ในคีย์ FacebookDisplayName ให้แทนที่ APP-NAME ด้วยชื่อแอพของคุณ
  7. ในการใช้กล่องโต้ตอบใดๆ ของ Facebook (เช่น การเข้าสู่ระบบ การแชร์ คำเชิญให้ลงแอพ ฯลฯ) ที่สามารถดำเนินการสลับแอพไปเป็นแอพ Facebook ได้ Info.plist ของแอพพลิเคชั่นของคุณจำเป็นต้องมีสิ่งต่อไปนี้ด้วย
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

คุณสามารถกำหนดการรวบรวมเหตุการณ์ในแอพอัตโนมัติให้เป็น “true” หรือ “false” ได้โดยตรง โดยเพิ่ม FacebookAutoLogAppEventsEnabled เป็นคีย์ใน Info.plist

โปรเจ็กต์ของคุณจะต้องมีความสามารถ Keychain Sharing อยู่ด้วย เพื่อให้การเข้าสู่ระบบทำงานในแอพพลิเคชั่น Mac Catalyst ได้
  1. เลือกปุ่ม + Capability (+ ความสามารถ) ในแท็บ Signing & Capabilities (การลงชื่อและความสามารถ) เมื่อกำหนดค่าเป้าหมายแอพของคุณ
  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 ย้ายฟังก์ชั่นการทำงานการเปิด URL ไปยัง 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 ในโค้ดของคุณ

ใช้ปุ่มการเข้าสู่ระบบด้วย Facebook ในแอพ iOS ของคุณ

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
ในการขอสิทธิ์ในการอ่านเพิ่มเติม ให้ตั้งค่าคุณสมบัติ permissions บนอ็อบเจ็กต์ FBLoginButton
// 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
เพิ่มเหตุการณ์ในแอพของคุณเพื่อดูข้อมูลวิเคราะห์ วัดประสิทธิภาพการโฆษณา และสร้างกลุ่มเป้าหมายสำหรับการกำหนดเป้าหมายโฆษณา
โปรดดูการตั้งค่าขั้นสูงของเราสำหรับการเข้าสู่ระบบด้วย Facebook สำหรับแอพ iOS
จัดการว่าแอพของคุณจะสามารถเข้าถึงข้อมูลใดได้บ้างผ่านการเข้าสู่ระบบด้วย Facebook
โปรดดูวิธีตอบสนองต่อข้อผิดพลาดที่ Facebook SDK ส่งคืน
ทดสอบและตรวจสอบยืนยันว่าการเข้าสู่ระบบด้วย Facebook ทำงานอย่างถูกต้อง
คุณอาจต้องส่งแอพของคุณให้ตรวจสอบก่อนเปิดใช้งาน ทั้งนี้ขึ้นอยู่กับข้อมูล Facebook ที่คุณร้องขอจากผู้ที่ใช้การเข้าสู่ระบบด้วย Facebook
หากต้องการสร้างขั้นตอนการเข้าสู่ระบบของคุณเอง โปรดดูสร้างขั้นตอนการเข้าสู่ระบบด้วยตนเอง