البرمجة

Facebook Graph API: Swift 3 Guide

المشكلة التي تواجهها تبدو واضحة، وهي أنّ الهيكل ViewController.UserProfileRequest.Response لا يتوافق مع بروتوكول GraphRequestProtocol. لحل هذه المشكلة، يتطلب الأمر تعديل الهيكل UserProfileRequest.Response ليتوافق مع متطلبات البروتوكول.

بموجب البروتوكول GraphRequestProtocol، يجب أن يتضمن الهيكل الداخلي لـ Response خاصية rawResponse من النوع Any?، وبالتالي، يجب تحديد مُعمَّم البداية (initializer) لتحويل الاستجابة الخام من نوع Any? إلى الخصائص الأخرى المرغوبة.

لذا، يُمكن تعديل الهيكل UserProfileRequest.Response كما يلي:

swift
struct UserProfileRequest { struct Response: GraphResponseProtocol { let email: String? init(rawResponse: Any?) { if let json = rawResponse as? [String: Any], let email = json["email"] as? String { self.email = email } else { self.email = nil } } } }

في هذا التعديل، تمت إضافة خاصية email التي تمثل البريد الإلكتروني المسترجع من الاستجابة. وفي المُعمَّم البداية init، يتم فك ترميز الـ JSON لاستخراج البريد الإلكتروني من الاستجابة الخام، وتخزينه في الخاصية المحددة.

بعد هذا التعديل، يجب أن يتمكن الكود من التوافق مع بروتوكول GraphRequestProtocol بشكل صحيح، ولا يجب أن تظهر الرسالة الخطأ التي ذكرتها.

المزيد من المعلومات

بعد تعديل هيكل الاستجابة، يمكن الآن استخدامه بشكل صحيح في الاتصال مع الطلب الرسمي. تتضمن الخطوات التالية الطريقة المناسبة لتكملة الكود:

swift
fileprivate struct UserProfileRequest: GraphRequestProtocol { struct Response: GraphResponseProtocol { let email: String? init(rawResponse: Any?) { if let json = rawResponse as? [String: Any], let email = json["email"] as? String { self.email = email } else { self.email = nil } } } let graphPath: String = "me" let parameters: [String: Any]? = ["fields": "email"] let accessToken: AccessToken? = AccessToken.current let httpMethod: GraphRequestHTTPMethod = .GET let apiVersion: GraphAPIVersion = .defaultVersion } fileprivate func returnUserData() { let connection = GraphRequestConnection() connection.add(UserProfileRequest()) { (response: HTTPURLResponse?, result: GraphRequestResult<UserProfileRequest.Response>) in switch result { case .success(let response): if let email = response.email { print("User's email is: \(email)") } else { print("Email not found in response.") } case .failed(let error): print("Graph request failed with error: \(error)") } } connection.start() }

هذا الكود يقوم بإنشاء طلب معلومات المستخدم باستخدام الهيكل UserProfileRequest الذي قمنا بتعديله. بعد ذلك، يتم إضافة هذا الطلب إلى اتصال GraphRequestConnection وتنفيذه. عندما يتم استرجاع الاستجابة، يتم فحصها للتأكد من نجاح الطلب ومعالجة البيانات بشكل مناسب.

من خلال هذه الخطوات، يجب أن يكون بإمكانك الآن استرجاع بيانات المستخدم بنجاح من Facebook Graph API باستخدام Swift 3 دون أي مشاكل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر