كيفية التحكم في "تدفق" تطبيق الويب ASP.NET MVC (3.0) الذي يعتمد على عضوية Facebook ، مع Facebook C# SDK؟

StackOverflow https://stackoverflow.com/questions/4610851

  •  25-09-2019
  •  | 
  •  

سؤال

أرغب في إزالة نظام عضوية ASP.NET القياسي بالكامل واستخدام Facebook فقط لعضوية تطبيق الويب الخاص بي. لاحظ أن هذا ليس سؤال تطبيق Facebook Canvas.

عادة ، في تطبيق ASP.NET ، لديك بعض الخصائص والأساليب الرئيسية للتحكم في "تدفق" التطبيق. والجدير بالذكر: Request.IsAuthenticated, [Authorize] (في تطبيقات MVC) ، Membership.GetUser() و Roles.IsUserInRole(), ، من بين أمور أخرى. يبدو [FacebookAuthorize] يعادل [Authorize]. هو fbApp.Session != null في الأساس نفس الشيء Request.IsAuthenticated?

أيضًا ، هناك بعض الأعمال القياسية التي أقوم بها عبر جميع وحدات التحكم في موقعي. لذلك قمت ببناء basecontroller الذي يتجاوز OnActionExecuting(FilterContext). عادة ، أقوم بملء ViewData مع ملف تعريف المستخدم ضمن هذا الإجراء. هل سيعاني الأداء إذا قمت بإجراء مكالمة fbApp.Get("me") في هذا الإجراء؟

يمكنني استخدام Facebook JavaScript SDK للقيام بالتسجيل ، وهو أمر لطيف وسهل. ولكن هذا كله من جانب العميل ، وأنا أواجه صعوبة في التفاف ذهني حول وقت استخدام مكالمات Facebook من جانب العميل مقابل جانب الخادم. ستكون هناك نقطة عندما أحتاج إلى الحصول على UID على Facebook للمستخدم وتخزينها في جدول "ملف تعريف" جنبًا إلى جنب مع بعض أجزاء البيانات الأخرى. من المحتمل أن يتم التعامل مع ذلك على عنوان URL للعودة من البرنامج المساعد للتسجيل ... صحيح؟

في ملاحظة جانبية ، ما هي البيانات التي يتم إرجاعها fbApp.Get("me")?

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

المحلول

يوفر Facebook C# SDK مرشح إجراء يسمى [Facebookauthorize] الذي سيتعامل مع المصادقة كما تصف. ونعم ، fbapp.request == null هي الطريقة الصحيحة لتحديد ما إذا كان المستخدم مصادقة. أعتقد أنني سأضيف خاصية على الإصدار التالي الذي يسمى IsaUthenticated لتسهيل الأمر.

أنت محق في استخدام JavaScript SDK لتسجيل الدخول. في الأساس ، كيف يعمل جانب JavaScript ينشئ ملف تعريف الارتباط الذي يقرأه Facebookapp ويتحقق منه. بالنسبة لتطبيق غير Canvas ، عليك في الأساس استخدام JavaScript SDK. يمكنك أن تفعل كل شيء يدويًا مع Oauth ، لكن هذا سيكون ألمًا كبيرًا.

فيما يتعلق بنتيجة fbapp.get ("أنا") ، فإن النتيجة هي jsonobject. يمكنك الوصول إليها بطريقتين:

// Using dynamic (.Net 4.0 only)
var app = new FacebookApp();
dynamic me = app.Get("me");
string firstName = me.first_name;
string lastName = me.last_name;
string email = me.email;

// Using IDictionary<string, object> (.Net 3.5, .Net 4.0, WP7)
var app = new FacebookApp();
var me = (IDicationary<string,object>)app.Get("me");
string firstName = (string)me["first_name"];
string lastName = (string)me["last_name"];
string email = (string)me["email"];

لدينا المزيد من عينات التعليمات البرمجية على codeplex الويكي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top