第一件事。我是一个完整的 OAuth 新手。这将是我的第一次尝试,事情变得越来越棘手......
我正在使用 Durandal & Web API 编写单页应用程序。用户需要能够使用任何社交网络登录。我无权访问数据库,我必须调用我在服务器端使用的未受保护的第 3 方 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,为什么它需要数据库?或者我是否正确地说我可以删除/替换该代码部分,并在我正在使用的网络服务上调用登录/授权?