我已经使用Facebook在生产中实施了一段时间的社交登录。截至今天早上,它已不再适合我。我在dev(没有SSL)和生产中得到了同样的错误,它在Azure网站上托管,并且确实使用SSL。
这是我看到的错误:
[WebException: The request was aborted: Could not create SSL/TLS secure channel.]
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
其他人看到了吗?我的Google登录功能继续正常运行。
答案 0 :(得分:13)
正如Igy所说,这是因为由于POODLE漏洞利用而导致Facebook禁用SSLv3。
我对连接到Twitter的应用程序发生了同样的事情。我通过添加这行代码来修复它以使用TLS。我不确定这是最好的解决方案,但它现在有效。
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
编辑:忘记提及这一点,但我将该行添加到global.asax的Application_Start
答案 1 :(得分:0)
使用SSL 3.0的旧版PHP SDK(Facebook PHP SDK 3.1.1及更早版本)现在将不再有效。
所有开发者都应该升级到Facebook SDK 3.2.3或更高版本。建议使用SDK 4.0.0。
答案 2 :(得分:0)
我们在实时环境中遇到同样的问题。所有帐户都在同一时间更改:
对于Twitter,我认为只需要更新Twitterizer.dll或最新的第三方Twitter库并检查代码更改。
对于LinkedIn来说,使用OAuthv2(或者最后一个,我不记得版本发布版)会很有趣,但我记得它很难解决。
对于Facebook来说,将SDK更改为最后一个并重新学习库更改。
2014年10月15日计划在8月份实现这一目标。
的问候,
ISY
答案 3 :(得分:0)
为什么将SecurityProtocol设置为TLS是一种解决方案?无论如何,.net应该与服务器协商最高可能的协议,如果TLS是一个选项,则更喜欢通过SSL的那个,不应该吗?!