استخدام Graph API، iOS

يمكنك استخدام Graph API لإدخال بيانات إلى مخطط التواصل الاجتماعي لفيسبوك وإخراجها منه.

ويشتمل هذا على ما يلي:

  • جلب معلومات الصفحة الشخصية لتوفير سياق اجتماعي.
  • جلب معلومات المستخدم مثل تسجيلات الإعجاب أو الصور الخاصة به.
  • نشر المنشورات (بما في ذلك مقاطع الفيديو والصور) على فيسبوك.
  • نشر أحداث Open Graph على فيسبوك.
  • للتعرف على مزيد من الميزات، يرجى الرجوع إلى وثائق Graph API.

يتناول هذا الدليل كيفية التعامل مع Graph API باستخدام Facebook SDK لنظام iOS.

المتطلبات الأساسية

يتطلب استدعاء Graph API قيام أحد الأشخاص بتسجيل الدخول إلى تطبيقك عبر فيسبوك ومنح تصاريح الأذونات لتطبيقك.

على سبيل المثال، إذا كنت ترغب في جلب عنوان البريد الإلكتروني لأحد الأشخاص، يجب أن يكون مصرحًا لتطبيقك بالإذن email. تأكد من الإلمام بما يلي جيدًا:

يجب كذلك إعداد بيئة التطوير لمجموعة iOS SDK وإعداد تطبيقك، لذا يرجى الرجوع إلى iOS، دليل بدء الاستخدام لمزيد من المعلومات.

جلب بيانات المستخدم

تشتمل SDK على فئتين للعمل مع Graph API: FBSDKGraphRequest وFBSDKGraphRequestConnection واللتان تتشابهان مع NSURLRequest وNSURLRequestConnection في إطار عمل المؤسسة.

لاستخدام FBSDKGraphRequest، يجب تقديم الطلب مصحوبًا بنقطة نهاية Graph API محددة. قم بعدها باستدعاء FBSDKGraphRequestConnection لبدء الطلب ومعالجة إكماله.

لتحقيق الاتساق، تحتوي مجموعة SDK على طريقة startWithCompletionHandler: في FBSDKGraphRequest لإنشاء FBSDKGraphRequestConnection ضمنيًا لك.

على سبيل المثال، لجلب معلومات الصفحة الشخصية للشخص الذي قام حاليًا بتسجيل الدخول إلى تطبيقك، قم بتنفيذ هذا الاستدعاء:

if ([FBSDKAccessToken currentAccessToken]) {
   [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
      if (!error) {
         NSLog(@"fetched user:%@", result);
      }
  }];
}

نشر البيانات

توفر الفئة FBSDKRequest مهايئات أخرى لتحديد المعلمات وطريقة HTTP. على سبيل المثال، إذا كنت تريد نشر تحديث حالة، فإن ذلك يتطلب أذونات publish_actions ثم تقوم بتنفيذ هذا الاستدعاء:

if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {
  [[[FBSDKGraphRequest alloc]
    initWithGraphPath:@"me/feed"
                     parameters: @{ @"message" : @"hello world"}
               HTTPMethod:@"POST"]
  startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    if (!error) {
      NSLog(@"Post id:%@", result[@"id"]);
    }
  }];
}

الطلبات المجمعة

يمكنك في Graph API تنفيذ طلبات مجمّعة في طلب HTTP واحد، لذا يرجى الرجوع إلى Graph API، تنفيذ الطلبات المجمّعة لمزيد من المعلومات.

يمكنك باستخدام SDK إنشاء طلبات متعددة وإضافتها إلى مثيل FBSDKGraphRequestConnection نفسه. ينبغي تنفيذ الطلبات المجمّعة كلما أمكن للحد من الضغط على حركة مرور الشبكة.

على سبيل المثال، يتم هنا طلب تسجيلات الإعجاب لأحد الأشخاص:

if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"user_likes"]) {
  FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"me" parameters:nil];
  FBSDKGraphRequest *requestLikes = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"me/likes" parameters:nil];
  FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init];
  [connection addRequest:requestMe
           completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
   //TODO: process me information
}];
  [connection addRequest:requestLikes
            completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    //TODO: process like information
  }];
  [connection start];
}

يمكنك تحديد المعلمات المجمعة أيضًا بأحمال addRequest:completionHandler: الزائدة والتي تتضمن إمكانية إنشاء مجموعة بطلبات تابعة.

مشاركة الصور ومقاطع الفيديو

بينما يمكن دائمًا إنشاء FBSDKGraphRequests يدويًا للعمل مع نقاط النهاية لواجهة Graph API، فإن مجموعة Facebook SDK لنظام iOS تساعد على تيسير عملية مشاركة الصور ومقاطع الفيديو باستخدام FBSDKShareKit.framework. على سبيل المثال، لمشاركة صورة:

// Assuming you have a UIImage reference
UIImage *someImage = ...;
FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
content.photos = @[[FBSDKSharePhoto photoWithImage:someImage userGenerated:YES] ];

// Assuming self implements <FBSDKSharingDelegate>
[FBSDKShareAPI shareWithContent:content delegate:self];

يمكنك أيضًا مشاركة مقاطع الفيديو باستخدام النوع FBSDKShareVideoContent. يرجى الرجوع إلى المشاركة على iOS.

حذف الكائنات

يمكن حذف الكائنات التي يتم إنشاؤها بواسطة تطبيقك من خلال إرسال طلب DELETE يحتوي على معرف الكائن باعتباره مسار الرسم البياني.

على سبيل المثال، قمت بنشر صورة كمنشور تبعًا لما هو مبين بالأعلى وتم تلقي المعرف "1234". يمكنك استخدام الرمز التالي لحذف المنشور:

if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {
  [[[FBSDKGraphRequest alloc]
    initWithGraphPath:@"1234"
                     parameters:nil
               HTTPMethod:@"DELETE"]
  startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    if (!error) {
      NSLog(@"Deleted post”);
    }
  }];
}

نصائح حول تصحيح الأخطاء

يمكنك تجربة طلباتك واختبارها باستخدام مستكشف Graph API.

يمكنك كذلك تمكين وضع تصحيح أخطاء Graph API، لذا يرجى الرجوع إلى استكشاف الأخطاء وإصلاحها في iOS SDK، وضع تصحيح أخطاء Graph API لمزيد من المعلومات.