Facebook 没有DB的应用程序:您必须调用;WebSecurity.InitializeDatabaseConnection“;方法,然后再调用;“网络安全”;班

Facebook 没有DB的应用程序:您必须调用;WebSecurity.InitializeDatabaseConnection“;方法,然后再调用;“网络安全”;班,facebook,asp.net-web-api,oauth-2.0,dotnetopenauth,durandal,Facebook,Asp.net Web Api,Oauth 2.0,Dotnetopenauth,Durandal,第一件事。我是个十足的OAuth新手。这将是我的第一次尝试,事情变得越来越棘手 我正在使用Durandal和WebAPI编写一个单页应用程序。 用户需要能够使用任何社交网络登录。 我不能访问任何数据库,我必须调用一个不受保护的第三方web服务,我在服务器端使用该服务,并且需要使用OAuth进行保护 因此,我成功地将这些文件添加到我的解决方案中,该解决方案使用facebook控件/按钮生成登录信息(创建了一个新的MVC4 web应用程序,并手动复制和粘贴了所有与身份验证相关的文件、更新的引导程序等

第一件事。我是个十足的OAuth新手。这将是我的第一次尝试,事情变得越来越棘手

我正在使用Durandal和WebAPI编写一个单页应用程序。 用户需要能够使用任何社交网络登录。 我不能访问任何数据库,我必须调用一个不受保护的第三方web服务,我在服务器端使用该服务,并且需要使用OAuth进行保护

因此,我成功地将这些文件添加到我的解决方案中,该解决方案使用facebook控件/按钮生成登录信息(创建了一个新的MVC4 web应用程序,并手动复制和粘贴了所有与身份验证相关的文件、更新的引导程序等),代码似乎大部分都有效

当facebook重定向回

 [AllowAnonymous]
 public ActionResult ExternalLoginCallback(string returnUrl)
 {
     AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(this.Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
     if (!result.IsSuccessful)
     {
        return this.RedirectToAction("ExternalLoginFailure");
     }

     if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
     {
        return this.RedirectToLocal(returnUrl);
     }

        //code removed for brevity       ....
  } 
一旦下面的行尝试执行,我就会得到指定的错误

OAuthWebSecurity.Login(result.Provider、result.ProviderUserId、createPersistentCookie:false)

我已经从控制器中删除了[InitializeSimpleMembership]属性,因为我没有数据库

如果这是有史以来最愚蠢的问题,请原谅我,但是


为什么登录失败?我的意思是,在这一点上,应用程序不是要登录facebook,为什么它需要一个数据库?或者我说我可以删除/替换代码部分,使用我正在使用的web服务上的登录/授权调用,这是正确的吗

这不是最愚蠢的问题。但是您会收到错误,因为您的成员资格提供程序仍然设置为使用
SimpleMembershipProvider
,并且
OAuthWebSecurity
将使用默认的成员资格提供程序。如果不想使用数据库,则必须创建或找到其他成员资格提供程序来使用

编辑:
我知道你说过你不能访问数据库,但是如果你可以使用SQL Compact,你可以使用默认的SimpleMembershipProvider(查看Hanselman的),或者DevArt有一个数据库。还有一个RavenDb提供商。如果这些都不管用,我想你可能只能自己写了。

哈哈哈+1用于链接。您知道我可以使用的其他会员资格提供商吗?