【发布时间】:2013-08-22 09:07:51
【问题描述】:
首先要做的事情。我是一个完整的 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,为什么它需要数据库?或者我是否正确地说我可以删除/替换该代码部分,并在我正在使用的网络服务上调用登录/授权?
【问题讨论】:
标签: facebook asp.net-web-api oauth-2.0 dotnetopenauth durandal