الفيسبوك ج # سك المصادقة How كيفية التعامل مع "تطبيقات" متعددة في تطبيق واحد?

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

سؤال

لقد حصلت على بلدي ASP.NET مفك 3 تطبيق ويب وتشغيلها مع الفيسبوك ج SD سك.

اتباع التعليمات هنا, ، يبدو كما لو كنت وضعت في أبيد / سر في قسم التكوين على شبكة الإنترنت تعليمات ، وهذا هو الإعدادات سحبت مرة أخرى عند استخدام FacebookApplication.Current, ، على سبيل المثال:

var oAuthClient = new FacebookOAuthClient(FacebookApplication.Current) 
{
   RedirectUri = new Uri(RedirectUrl)
};

تطبيق الويب الخاص بي هو "الأبيض المسمى" so serves لذلك يخدم موقعين ، مع اثنين من تطبيقات الفيسبوك منفصلة.

في السابق عندما نفذت الفيسبوك الاتصال ، كان لي خاصية عالمية تسمى "فيسبوكابليكاتيونيد" ، والتي نظرت إلى المجال وعملت id أي معرف التطبيق للاستخدام.

هل هناك طريقة رشيقة للقيام بذلك مع الفيسبوك ج SD سك?

يمكنني فقط أن أفعل هذا:

var oAuthClient = new FacebookOAuthClient(FacebookApplication.Current) 
{
     RedirectUri = new Uri(RedirectUrl),
     AppId = ManuallyGetTheRightAppIdBasedOnDomain(),
     AppSecret = ManuallyGetTheRightAppSecretBasedOnDomain()
};

لكن هذا يبدو غير جاف حيث سأضطر إلى الاستمرار في فعل ذلك.

هل هناك طريقة يمكنني من خلالها وضع بعض الذكاء FacebookApplication.Current, ، بحيث AppId و AppSecret يتم تعيين خصائص بالفعل?

مفتوحة لأي وجميع الاقتراحات.

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

المحلول

أعتقد أنني حصلت عليه:رئيس قسم FacebookOAuthClient يأخذ IFacebookApplication.

لذلك أنا خلقت تنفيذ ملموس يسمى WhiteLabeledFacebookApplication, ، الذي ينفذ IFacebookApplication.

WhiteLabeledFacebookApplicationفي كتور يأخذ WebsiteType التعداد ، وبالتالي فإن خصائص ل AppId و AppSecret اقرأ القيم ذات الصلة من الويب.التكوين على أساس التعداد مرت في كتور.

لذلك ، في بلدي FacebookController, ، (حيث أفعل كل الأشياء أف ب) ، لدي ملكية خاصة تسمى CurrentFacebookApplication:

private IFacebookApplication _currentFacebookApplication;
private IFacebookApplication CurrentFacebookApplication
{
   get
   {
      if (_currentFacebookApplication == null)
      {
         var websiteType = SomeUnimportantCodeWhichWorksOutWebsiteFromUrl();
         _currentFacebookApplication = new WhiteLabeledFacebookApplication(websiteType );
      }

      return _currentFacebookApplication;
   }
}

حتى أستطيع أن أفعل هذا:

var oAuthClient = new FacebookOAuthClient(CurrentFacebookApplication) 
{
   RedirectUri = new Uri(RedirectUrl)
};

وسيتم سحب معرف التطبيق/السر الصحيح - رائع!

الشيء الوحيد الذي أتمنى أن أفعله هو استخدام حقن التبعية ، ولكن أثناء بناء وحدات التحكم، لا يوجد HttpContext لذلك لا يمكنني تحديد نوع موقع الويب.

لا يزال ، يعمل بشكل جيد-جافة إلى حد ما.

القبعات قبالة للمطورين لمجموعة أدوات لاستخدام البرمجة واجهة يحركها.

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