إذا كان تطبيقك يطلب أكثر من 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
:
UIButton
إلى التخطيط لديك. وعيّن حدودًا لتحديد موضعه.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 }