OAuthWebSecurity.VerifyAuthentication authcofig facebook 登录中的错误请求 (400)

Bad request(400) in OAuthWebSecurity.VerifyAuthentication authcofig facebook login

我正在从我的网站创建一个社交媒体登录,我已经创建了一个示例项目来检查它,但是 ExternalLoginCallback 操作无法正常工作并且

`   AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));`

抛出异常

The remote server returned an error: (400) Bad Request.

堆栈跟踪是

Source Error:


Line 218:        public ActionResult ExternalLoginCallback(string returnUrl)
Line 219:        {
Line 220:             AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
Line 221:           // AuthenticationResult result = null;// = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
Line 222:            string code = Request.QueryString["code"];


Source File: e:\Test\MvcApplication2\MvcApplication2\Controllers\AccountController.cs    Line: 220

Stack Trace:


[WebException: The remote server returned an error: (400) Bad Request.]
   System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +283
   System.Net.WebClient.DownloadString(Uri address) +100
   DotNetOpenAuth.AspNet.Clients.FacebookClient.QueryAccessToken(Uri returnUrl, String authorizationCode) +350
   DotNetOpenAuth.AspNet.Clients.OAuth2Client.VerifyAuthentication(HttpContextBase context, Uri returnPageUrl) +202
   DotNetOpenAuth.AspNet.OpenAuthSecurityManager.VerifyAuthentication(String returnUrl) +411
   Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthenticationCore(HttpContextBase context, String returnUrl) +189
   Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthentication(String returnUrl) +139
   MvcApplication2.Controllers.AccountController.ExternalLoginCallback(String returnUrl) in e:\Test\MvcApplication2\MvcApplication2\Controllers\AccountController.cs:220
   lambda_method(Closure , ControllerBase , Object[] ) +180
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +211
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +48
   System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +57
   System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +223
   System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +223
   System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +48
   System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +24
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +102
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +43
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +47
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9514812
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Facebook 上的 url return 是

http://localhost:54474/Account/ExternalLoginCallback?__provider__=facebook&__sid__=e07b65643de449b6b61fccabcba9dcfd&code=AQCY7rTkkrOvLJU9qAk4l-FK2UNgNqetQPof27DxEgsPcEYL_xoafxd50x_YYWcifQ86qBm8PZnipbQOe3f6cLjrRFCqEnqwHKb4QAEuFHeVU0iAhhWLkjAJ_uWVtA1GsFxk0RkXIsFv3qgPuD9Yzgw2LU44M3LpIxEKnrkvqa7huFSr3iPxvpNU5RWDwEpxBa2946CiLXfOjLpSn6D1ImSG5rs8zP8g_yuIcMgfJR8biyuv2sTpEIwkxb7vuflWrlbPedDla8KtucJEZcK5ZFeZXyDOE153TeTLWdCMsH74ii5JObawDkH9eGbwhoO4y34#_=_

我的 authconfig 代码是

  OAuthWebSecurity.RegisterFacebookClient(
                appId: ConfigurationManager.AppSettings["FBAPPID"],
                appSecret: ConfigurationManager.AppSettings["FBAPPSECRET"]);

这个问题困扰我好几个小时了,请大家帮忙

我解决了这个问题。实际问题出在 FB 设置上,我在关闭它开始工作时不小心启用了本机或桌面应用程序选项