5

我正在使用 OAuthWebSecurity 登录 facebook,它正在本地主机上运行。但是,然后部署到实时服务器,我收到以下错误消息:

远程服务器返回错误:(400) 错误请求。

  • 我在 facebook 上检查了域详细信息是否正确。
  • 沙盒模式被禁用。
  • 我已禁用 Windows 防火墙 - 仍然出现相同的错误。
  • 无论是在 live 还是 localhost 环境中,来自 facebook 的响应都具有相同的格式。
  • 实时服务器的日期和时间是正确的。

我已经在本地进行了测试,还将主机文件更改为实时域 - 仍然可以在本地工作。

这是堆栈跟踪:

[WebException: The remote server returned an error: (400) Bad Request.]
System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +3291120
System.Net.WebClient.DownloadString(Uri address) +207
DotNetOpenAuth.AspNet.Clients.FacebookClient.QueryAccessToken(Uri returnUrl, String authorizationCode) +293
DotNetOpenAuth.AspNet.Clients.OAuth2Client.VerifyAuthentication(HttpContextBase context, Uri returnPageUrl) +167
DotNetOpenAuth.AspNet.OpenAuthSecurityManager.VerifyAuthentication(String returnUrl) +502
Microsoft.Web.WebPages.OAuth.OAuthWebSecurity.VerifyAuthenticationCore(HttpContextBase context, String returnUrl) +231

有什么建议么?

4

2 回答 2

1

这是一个旧的,但是我使用 dotnetopenoath 从 Facebook 登录中遇到了 400 错误,因为它已集成到 MVC 4 中,并且进行了一场疯狂的追逐,认为它无法正常工作,因为它不再受支持,而我需要做的只是被捕获并记录异常,该异常指出我的特定案例的问题(应用程序秘密证明设置):

catch (WebException exception)
{
    using (WebResponse response = exception.Response)
    {
        HttpWebResponse httpResponse = (HttpWebResponse) response;
        m_log.Debug("Error code: " + httpResponse.StatusCode);
        using (Stream data = response.GetResponseStream())
        {
            if (data != null)
            {
                using (var reader = new StreamReader(data))
                {
                    string text = reader.ReadToEnd();
                    m_log.Debug(text);
                }
             }
         }
    }
}
于 2014-08-09T01:44:13.867 回答
1

存在与此相关的缺陷: https ://github.com/DotNetOpenAuth/DotNetOpenAuth/issues/203

但该库显然不再被维护: https ://github.com/DotNetOpenAuth/DotNetOpenAuth/issues/317#issuecomment-29580565

...尽管它仍然在许多 Microsoft 文档中被引用。调查与另一个缺陷相关的问题。

另请参阅:远程服务器返回错误:(400) 错误请求 Microsoft.AspNet.Membership.OpenAuth

于 2013-12-01T19:19:50.890 回答