2013-09-22 3 views
2

Я использую шаблон MVC5 с предварительным просмотром VisualStudio 2013, он имеет приятные конфигурации Startup.Auth.cs, которые работают во всех социальных доменах, которые я пытаюсь использовать. Однако FaceBook требует указать возвращаемый хост. Хорошо. Таким образом, у меня есть одно приложение для Facebook для локального хоста и одно приложение для facebook для развернутого приложения. Я хотел бы, чтобы приложение узнало, где оно развернуто, и передайте approriate ключи, но у меня проблемы в местоположении Startup.Auth.cs. Есть ли лучшее место для этого?Использование FaceBook OAuth mvc5 с различными ключами LocalHost и Deployed

public void ConfigureAuth(IAppBuilder app) 
    { 
     // Enable the application to use a cookie to store information for the signed in user 
     // and to use a cookie to temporarily store information about a user logging in with a third party login provider 
     app.UseSignInCookies(); 

     // Uncomment the following lines to enable logging in with third party login providers 
     //app.UseMicrosoftAccountAuthentication(
     // clientId: "", 
     // clientSecret: ""); 

     if (HttpContext.Current.Request.IsLocal) 
     { 
      app.UseFacebookAuthentication(
       appId: "1234localid", 
       appSecret: "123123123123123"); 
     } 
     else 
     { 
      app.UseFacebookAuthentication(
       appId: "4321deployid", 
       appSecret: "123123123123123"); 
     } 

Кажется, что это всегда разрешает второй вариант. Как будто при разрешении /AppStart/Startup.Auth.cs он не знает, когда он IsLocal или нет.

ответ

2

Текущий запрос определенно не там, где вы хотите смотреть. Запрос может быть локальным запросом на любом сервере. В любом случае при запуске приложения, вероятно, нет никакого запроса на просмотр вообще.

Вы хотите, чтобы приложение вел себя по-разному в зависимости от места его развертывания. Вы знаете, где он развертывается при развертывании, это, вероятно, лучшее время для принятия решения о том, в какое время аутентификации Facebook вам нужно.

Метод ConfigureAuth является частью класса Startup, который использует Owin для инициализации вашего приложения.

У вас могут быть разные классы запуска, и вы можете настроить его в web.config, который должен использовать один Owin. На сервере развертывается вам может иметь что-то вроде этого:

<appSettings> 
    <add key="owin:appStartup" value="YourNamespaceHere.ProductionStartup" /> 
</appSettings> 

На локальной машине вы могли бы использовать это.

<appSettings> 
    <add key="owin:appStartup" value="YourNamespaceHere.Startup" /> 
</appSettings> 

Класс ProductionStartup имеет код Facebook, необходимый для развернутого сценария, класс запуска для тестирования.

Вы можете узнать больше о OWIN Startup here

Смежные вопросы