2

我正在使用带有 VisualStudio 2013 预览版的 MVC5 模板,它具有不错的 Startup.Auth.cs 配置,适用于我尝试的所有社交领域。然而,FaceBook 要求您指定返回主机。美好的。所以我有一个用于本地主机的 Facebook 应用程序和一个用于已部署应用程序的 Facebook 应用程序。我希望应用程序知道它的部署位置并传递适当的密钥,但在 Startup.Auth.cs 位置存在问题。有没有更好的地方可以做到这一点?

 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。

4

1 回答 1

2

当前请求绝对不是您想要查找的地方。请求可以是任何服务器上的本地请求。无论如何,在应用程序启动时,可能根本没有任何要求查看。

您希望应用程序的行为根据其部署位置而有所不同。您在部署它时就知道它的部署位置,这可能是决定您需要什么时间进行 Facebook 身份验证的最佳时机。

ConfigureAuth 方法是 Owin 用于初始化应用程序的 Startup 类的一部分。

你可以有不同的启动类,你可以在 web.config 中配置 Owin 应该使用哪个。在您部署到的服务器上,您可能有这样的东西:

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

在本地机器上你可以使用它。

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

ProductionStartup 类具有部署场景所需的 Facebook 代码,Startup 类用于您的测试。

您可以在此处阅读有关 OWIN 启动的更多信息

于 2013-09-22T17:54:56.453 回答