مراجعة تسجيل الدخول

إذا كان تطبيقك يطلب أكثر من public_profile وemail، فيجب على فيسبوك مراجعته قبل أن تتمكن من إصداره. تعرف على المزيد حول عملية المراجعة والعناصر المطلوبة لاجتياز المراجعة بنجاح.

دليل مراجعة تسجيل الدخول

زر تسجيل الدخول المخصص

وبدلاً من استخدام زر تسجيل الدخول المرتبط بعلامة تجارية في فيسبوك (يتم توضيح ذلك في تسجيل دخول فيسبوك لنظام iOS - دليل البدء السريع)، يمكنك تصميم سلوك وتخطيط مخصصين. في مثال الرمز التالي، يمكننا استدعاء مربع الحوار تسجيل الدخول باستخدام فئة مدير تسجيل الدخول (LoginManager) وزر مخصص (UIButton). ويمكنك استخدام أي واجهة مستخدم مخصصة أخرى أو معالجة الأحداث لاستدعاء مربع حوار تسجيل الدخول.

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        // Add a custom login button to your app
        let loginButton = UIButton(type: .custom)
        loginButton.backgroundColor = .darkGray
        loginButton.frame = CGRect(x: 0, y: 0, width: 180, height: 40)
        loginButton.center = view.center
        loginButton.setTitle("My Login Button", for: .normal)

        // Handle clicks on the button
        loginButton.addTarget(self, action: #selector(loginButtonClicked), for: .touchUpInside)

        view.addSubview(loginButton)
    }
  
  
    // Once the button is clicked, show the login dialog
    func loginButtonClicked() {
        let loginManager = LoginManager()
        loginManager.logIn(permissions: ["public_profile"], from: self) { result, error in
            if let error = error {
                print("Encountered Erorr: \(error)")
            } else if let result = result, result.isCancelled {
                print("Cancelled")
            } else {
                print("Logged In")
            }
        }
    }
}

    

استخدام أداة إنشاء الواجهة

هذه الخطوات مطلوبة للإصدار 12.0.0 والإصدارات الأحدث من مجموعة Facebook SDK لنظام iOS. قد تتعطل التطبيقات التي تستخدم Interface Builder إذا لم تكمل هذه الخطوة.

لإضافة زر تسجيل الدخول بشكل رسومي في Interface Builder:

  1. أضف كائن UIButton إلى التخطيط لديك. وعيّن حدودًا لتحديد موضعه.
  2. في Identity inspector، قم بتغيير الخاصية Class إلى FBSDKLoginButton.

والآن يبدو تخطيطك على هذا النحو:

ملاحظة: لا تقم بتعيين وحدة للفئة FBSDKLoginButton. حيث يجب أن تظل بلا:

ملاحظة: قد ترى الخطأ التالي في سجلات Xcode بسبب مشكلة معروفة في XCFrameworks:

[Storyboard] Unknown class FBSDKLoginButton in Interface Builder file.

يمكنك إصلاح المشكلة عن طريق "التحميل المسبق" لفئة FBSDKLoginButton قبل أن يتم تحميل مخطط العمل من خلال إضافة ما يلي إلى الأسلوب application:didFinishLaunchingWithOptions::

// For Swift
_ = FBLoginButton.self

// For Objective-C
[FBSDKLoginButton class];

رموز الوصول

الإشعارات

يمكنك تتبع تغييرات AccessToken.current من خلال إشعار .AccessTokenDidChange في NotificationCenter. ويتيح لك هذا الاستجابة إلى التغييرات في حالة تسجيل دخول المستخدم:

NotificationCenter.default.addObserver(
    forName: .AccessTokenDidChange,
    object: nil,
    queue: .main
) { notification in
    if notification.userInfo?[AccessTokenDidChangeUserIDKey] != nil {
        // Handle user change
    }
}

يمكن لمجموعة iOS SDK تحديث AccessToken.current بمرور الوقت، على سبيل المثال عند تحديث مجموعة SDK لرمز ما بحيث يحصل على تاريخ انتهاء صلاحية أطول. ولذلك، يجب عليك التحقق من قاموس userInfo في إشعار AccessTokenDidChangeUserIDKey لتحديد ما إذا تم تغيير المستخدم أم لا.

الملفات الشخصية

يحتوي Profile على معلومات الملف الشخصي العامة، الأمر الذي يتيح لك إضفاء طابع شخصي على تطبيقك من خلال اسم المستخدم وصورة الملف الشخصي. ويمكنك تحميل الملف الشخصي للمستخدم الذي قام بتسجيل الدخول باستخدام loadCurrentProfile(completion:).

Profile.loadCurrentProfile { profile, error in
    if let firstName = profile?.firstName {
        print("Hello, \(firstName)")
    }
}

يمكنك تعيين الخاصية enableUpdatesOnAccessTokenChange إلى القيمة true لتحميل الملف الشخصي تلقائيًا في Profile.current. كما يتيح لك ذلك ملاحظة الإشعار .ProfileDidChange للاستجابة إلى تغييرات الملف الشخصي:

Profile.enableUpdatesOnAccessTokenChange(true)
NotificationCenter.default.addObserver(
    forName: .ProfileDidChange,
    object: nil,
    queue: .main
) { notification in
    if let currentProfile = Profile.current {
        // Update for new user profile
    }
}

عرض صور الملف الشخصي

توفر الفئة FBProfilePictureView طريقة سهلة لعرض صورة الملف الشخصي لشخص ما على فيسبوك. ما عليك سوى تعيين خاصية profileID في المثيل. ويمكنك تعيينها إلى قيمة AccessToken.current.userID لعرض صورة الملف الشخصي للشخص الموجود قيد تسجيل الدخول حاليًا.

let profilePictureView = FBProfilePictureView()
profilePictureView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
profilePictureView.profileID = AccessToken.current!.userID
view.addSubview(profilePictureView)

إعداد نوع التصريح

auth_type الافتراضي لأزرار تسجيل دخول فيسبوك في مجموعة Facebook SDK لنظام iOS هو إعادة الطلب. إذا أردت تجنب طلب الأذونات التي تم رفضها مسبقًا، فقم بتعيين auth_type إلى nil. يمكنك أيضًا تعيينه إلى إعادة التصريح لعرض مربع حوار إعادة تصريح استخدام البيانات إذا انتهت صلاحية الوصول إلى بيانات المستخدم.

يعرض المثال التالي كيفية تعيين auth_type في Swift.

let loginButton = FBLoginButton()

// Set to nil for no auth_type
button.authType = nil

// Or set to reauthorize
button.authType = .reauthorize

يعرض المثال التالي كيفية تعيين auth_type باستخدام تكوين تسجيل دخول من خلال مدير تسجيل الدخول.

let config = LoginConfiguration(
    permissions: [],
    tracking: .enabled,
    messengerPageId: nil,
    authType: nil
)

let loginManager = LoginManager()
loginManager.logIn(viewController: self, configuration: config!) { loginResult in
    // Do something with loginResult
}