【发布时间】:2016-03-13 12:38:52
【问题描述】:
我想知道是否有人可以帮助我或为我指明正确的方向。我已经在我的 web api 2 项目中设置了 facebook 社交登录,它可以正常工作。但是,当我将其部署到生产环境时,我发现 redirect_uri 显示的是 HTTP 而不是 HTTPS,这会导致服务崩溃。
我首先想知道redirect_uri是如何构造的,有没有办法更新它。
发生这种情况的全部原因是我们的负载均衡器。该站点在 HTTP 协议下运行,但负载均衡器接受 HTTPS 流量并将其重定向到 HTTP。不幸的是,我无法更新负载均衡器,因此需要找到解决方法。
我确实尝试在IFacebookAuthenticationProvider 的ApplyRedirect 方法中拦截redirect_uri,这成功地允许我将redirect_uri 从HTTP 更改为HTTPS。但是,当我这样做时,一旦我登录 Facebook 并且不知道为什么会发生这种情况,就会收到一个 access_denied 的固定错误。
有人可以帮我实现这个吗?我可以将facebook设置的redirect_uri和cookie显式标记为HTTPS吗?
这是我的 Facebook Provider 类
public class FacebookAuthProvider : IFacebookAuthenticationProvider
{
public void ApplyRedirect(FacebookApplyRedirectContext context)
{
string redirect_uri = context.RedirectUri;
redirect_uri = redirect_uri.Replace("redirect_uri=http", "redirect_uri=https");
context.Response.Redirect(redirect_uri);
}
public Task Authenticated(FacebookAuthenticatedContext context)
{
context.Identity.AddClaim(new Claim("ExternalAccessToken", context.AccessToken));
return Task.FromResult<object>(null);
}
public Task ReturnEndpoint(FacebookReturnEndpointContext context)
{
return Task.FromResult<object>(null);
}
}
【问题讨论】:
标签: c# facebook asp.net-web-api owin