تكامل تسجيل الدخول باستخدام Google+ وFacebook في Swift
في مواجهة تحدي دمج تسجيل الدخول باستخدام Google+ وFacebook في نفس ملف appdelegate.swift
، يجب أن نأخذ في اعتبارنا أن هناك تضارب في الأسماء والوظائف بين الكودين. يظهر الكود الخاص بك كالتالي:
swiftfunc application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
GIDSignIn.sharedInstance().delegate = self
return true
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
}
وهو الذي يعالج تسجيل الدخول باستخدام Google+. والآن تحاول إضافة تسجيل الدخول باستخدام Facebook مما يؤدي إلى تضارب في وظائف معينة. للتغلب على هذا التضارب، يمكن دمج الوظائف المتعلقة بـ Facebook في الوظائف الحالية كما يلي:
swiftfunc application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
var configureError: NSError?
GGLContext.sharedInstance().configureWithError(&configureError)
assert(configureError == nil, "Error configuring Google services: \(configureError)")
GIDSignIn.sharedInstance().delegate = self
// Add Facebook initialization here
return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
// Handle Google+ URL
let googlePlusHandled = GIDSignIn.sharedInstance().handleURL(url, sourceApplication: sourceApplication, annotation: annotation)
// Handle Facebook URL
let facebookHandled = FBSDKApplicationDelegate.sharedInstance().application(
application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
return googlePlusHandled || facebookHandled
}
بهذا الشكل، يمكنك دمج وظائف Google+ وFacebook في نفس ملف appdelegate.swift
بدون أي تضارب. يقوم الكود بفحص ما إذا كانت الـ URL تتعلق بتسجيل الدخول باستخدام Google+ أو Facebook ويتم التعامل معها بشكل مناسب.
المزيد من المعلومات
في عملية دمج تسجيل الدخول باستخدام Google+ وFacebook في نفس ملف appdelegate.swift
، يجب أن نضيف بعض التفاصيل لضمان أن العملية تتم بنجاح.
أولاً، يجب التأكد من أنك قد قمت بتضمين مكتبات GoogleSignIn وFacebook في مشروعك. يمكنك القيام بذلك عن طريق إضافة الأتي في ملف Podfile
الخاص بمشروعك:
rubytarget 'YourApp' do
# ... مكتبات أخرى
pod 'GoogleSignIn'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
end
ثم قم بتحديث المكتبات باستخدام الأمر pod install
في مجلد المشروع.
ثانياً، تأكد من أنك قد قمت بإضافة مفاتيح التطبيق لـ Google وFacebook في ملف Info.plist
الخاص بتطبيقك. يمكنك الحصول على مفاتيح التطبيق من لوحة تحكم مطوري Google وFacebook.
ثالثاً، تأكد من أنك قد قمت بتعيين الـ delegate الخاص بك للتعامل مع الردود من GoogleSignIn وFacebook. لديك الكود التالي في application(_:openURL:sourceApplication:annotation:)
:
swiftfunc application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
// Handle Google+ URL
let googlePlusHandled = GIDSignIn.sharedInstance().handle(url,
sourceApplication: sourceApplication,
annotation: annotation)
// Handle Facebook URL
let facebookHandled = ApplicationDelegate.shared.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
return googlePlusHandled || facebookHandled
}
رابعاً، تأكد من أنك قد قمت بتعيين delegate الخاص بك لـ GoogleSignIn. يجب أن تكون الدالة signIn(_:didSignInFor:withError:)
متوفرة في الكلاس الخاص بك ومعالجة نجاح تسجيل الدخول.
swiftfunc sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
// Handle error
print("Google Sign In Error: \(error.localizedDescription)")
return
}
// Handle successful Google Sign In
// ...
}
بتنفيذ هذه الخطوات، يمكنك دمج تسجيل الدخول باستخدام Google+ وFacebook في نفس ملف appdelegate.swift
بطريقة تتجنب التضاربات وتحقق تكاملًا سلسًا لتجربة المستخدم.