الفيسبوك ج # سك المصادقة How كيفية التعامل مع "تطبيقات" متعددة في تطبيق واحد?
-
14-11-2019 - |
سؤال
لقد حصلت على بلدي 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
لذلك لا يمكنني تحديد نوع موقع الويب.
لا يزال ، يعمل بشكل جيد-جافة إلى حد ما.
القبعات قبالة للمطورين لمجموعة أدوات لاستخدام البرمجة واجهة يحركها.