سؤال

أنا أعمل على تطبيق Facebook وهناك شيء لا أفهمه حول كيفية عمل نظام التفويض الخاص بهم.

الإعداد الأساسي لدينا هو هذا

Canvas url = domain.com/facebook

هذه صفحة بسيطة بها عنصر FBML IFRAME يشير إلى domain.com/facebook/app وهي صفحة HTML التي تخدم تطبيق فلاش.

يطلب تطبيق Flash بيانات إضافية من خادم التطبيق الخاص بنا - بعض هذه الطلبات تطلب بيانات Facebook (مثل قائمة معرفات الأصدقاء).

لذا ، فإن Flash ثم يقدم طلبًا إلى Domain.com/resources/facebook/friends - هذه صفحة PHP تقوم بإنشاء مثيل Facebook (مكتبة PHP الخاصة بهم) ويقوم بالاتصال الضروري إلى واجهة برمجة التطبيقات الخاصة بهم وإرجاع البيانات.

ومع ذلك ، فإن طلب عنوان URL هذا (بواسطة الفلاش) لا يتحقق من صحة ، لذلك يتم إعادة توجيهه بعد ذلك إلى تسجيل الدخول عندما يعيد توجيه عنوان URL الخاص بي مع معلمتين - معلمتين - Auth_token و التالي. وبالتالي فإن الطلب صالح ، لكن إعادة توجيه مكالمة الفلاش.

لذا ، أحاول معرفة كيفية إجراء مكالمات API الأخرى (عندما يكونون مكالمات API في Facebook) ، يتم إرفاقها على Facebook من البداية.

هل كانت مفيدة؟

المحلول

حسنًا ، لقد اكتشفت ذلك.

كما اتضح ، يتبع Flash بالفعل عمليات إعادة التوجيه - كل ما كنت بحاجة إلى فعله هو اكتشاف (في عنوان URL Canvas) عندما كان هناك طلب تفويض (لاحظه وجود Auth_token و التالي) و تضمن Auth_token كمعلمة GET عند إعادة توجيهها إلى عنوان URL التالي (بشكل أساسي ، قم بإعادة توجيه Auth_Token إلى الطلب الأصلي).

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

نصائح أخرى

حل عن طريق وضع الرمز أدناه بدلاً من خط "requist_login ()"

if (isset($_GET['auth_token'])) {
 $sess_data=$facebook->api_client->call_method('auth.getSession',array('auth_token'=>$_GET['auth_token']));
 $facebook->set_user($sess_data['uid'],$sess_data['session_key'],$sess_data['expires']);
 $user=$sess_data['uid'];
}
if (!$sess_data) {
 $user=$facebook->require_login();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top