Microsoft.Owin.Security.Facebook:无法到达 facebook tokenEndpoint
Microsoft.Owin.Security.Facebook : Unable to reach facebook tokenEndpoint
我正在尝试在 asp.net web api2 项目中使用 facebook 实施外部身份验证。
我使用的Microsoft.Owin.Security.Facebook
包的版本是3.0.1。
这些步骤工作得很好:
- 重定向到外部登录的登录 facebook 表单
- facebook后台回调api,带授权码(facebook登录成功)
之后,中间件应该调用facebook tokenEndpoint,
https://graph.facebook.com/oauth/access_token,获取访问令牌。
但是我得到一个socketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败
所以我尝试在控制台应用程序中模拟对 facebook tokenEndpoint(使用 HttpClient.GetAsync
)的调用。
我收到一个代理错误,我通过在 WebRequestHandler
:
中指定代理解决了这个错误
var proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultCredentials;
HttpClient httpclient = new HttpClient(new WebRequestHandler { Proxy = proxy });
//GetAsync OK with the use of the current system proxy
var result = RunSync(() => httpclient.GetAsync("https://graph.facebook.com/oauth/access_token"));
我终于在我的应用程序 FacebookAuthenticationOptions
中报告了代理设置,但错误仍然存在。
我不知道为什么调用在控制台应用程序中有效,但在 Web 应用程序中无效。
我试图比较两个应用程序之间的 HttpClient 状态,但发现不多。
有人知道问题的原因吗?
WebRequest.DefaultWebProxy
的行为在我的控制台应用程序和我的 Web 应用程序之间是不一样的,尽管事实上在 app.config 或 web.config 中都没有声明代理.
我在msdn中看到,如果在应用程序配置中没有找到代理,
WebRequest.DefaultWebProxy
将使用系统默认代理。
控制台应用程序属于这种情况,但 Web 应用程序并非如此。
要在 Web 应用程序中使用系统代理,我必须专门使用 WebRequest.GetSystemWebProxy()
.
那解决了在我的开发环境中访问 facebook tokenEndpoint 的问题。
我不知道 WebRequest.DefaultWebProxy
在我的网络应用程序中返回的代理来自哪里。
我正在尝试在 asp.net web api2 项目中使用 facebook 实施外部身份验证。
我使用的Microsoft.Owin.Security.Facebook
包的版本是3.0.1。
这些步骤工作得很好:
- 重定向到外部登录的登录 facebook 表单
- facebook后台回调api,带授权码(facebook登录成功)
之后,中间件应该调用facebook tokenEndpoint, https://graph.facebook.com/oauth/access_token,获取访问令牌。
但是我得到一个socketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败
所以我尝试在控制台应用程序中模拟对 facebook tokenEndpoint(使用 HttpClient.GetAsync
)的调用。
我收到一个代理错误,我通过在 WebRequestHandler
:
var proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultCredentials;
HttpClient httpclient = new HttpClient(new WebRequestHandler { Proxy = proxy });
//GetAsync OK with the use of the current system proxy
var result = RunSync(() => httpclient.GetAsync("https://graph.facebook.com/oauth/access_token"));
我终于在我的应用程序 FacebookAuthenticationOptions
中报告了代理设置,但错误仍然存在。
我不知道为什么调用在控制台应用程序中有效,但在 Web 应用程序中无效。 我试图比较两个应用程序之间的 HttpClient 状态,但发现不多。
有人知道问题的原因吗?
WebRequest.DefaultWebProxy
的行为在我的控制台应用程序和我的 Web 应用程序之间是不一样的,尽管事实上在 app.config 或 web.config 中都没有声明代理.
我在msdn中看到,如果在应用程序配置中没有找到代理,
WebRequest.DefaultWebProxy
将使用系统默认代理。
控制台应用程序属于这种情况,但 Web 应用程序并非如此。
要在 Web 应用程序中使用系统代理,我必须专门使用 WebRequest.GetSystemWebProxy()
.
那解决了在我的开发环境中访问 facebook tokenEndpoint 的问题。
我不知道 WebRequest.DefaultWebProxy
在我的网络应用程序中返回的代理来自哪里。