Facebook API和Safari
更新和解决方案:事实证明问题是基于我用于我的开发URL的重定向,这导致浏览器将我的页面设置的所有cookie视为第三方cookie。 Facebook JS API会话cookie未设置为第三方cookie。
我正在使用Facebook身份验证的ASP.NET应用程序。为此,我将微软Facebook SDK与Facebook的Javascript API结合使用。一切都在工作,除了Safari。 Safaris默认设置是不接受第三方cookie,这导致:
我可以通过Javascript访问Facebook会话。
我无法访问Facebook会话服务器端,因为cookie从未设置并从Safari发送。
这是我与Facebook(JS)相关的客户端代码:
<div id="fb-root"></div>
<fb:login-button>Login with Facebook</fb:login-button>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({ appId: 'myAppId', status: true, cookie: true, xfbml: true });
FB.Event.subscribe('auth.login', function (response) {
if (response.session) {
window.location.reload(); //Results in eternal reload of page
}
});
</script>
这是我获取用户id服务器端(C#)的代码:
public string FacebookUserID
{
get
{
FacebookSettings settings = new FacebookSettings();
settings.AppId = "myAppId";
settings.AppSecret = "myAppSecret";
FacebookApp app = new FacebookApp(settings);
Authorizer auth = new Authorizer(app);
return (auth.IsAuthorized()) ? app.Session.UserId : null;
}
}
我想我不是唯一一个遇到同样问题的人,但我搜索过Facebook开发者论坛并且在这里找不到解决方案。它实际上更像是Safari问题,而不是Facebook特有的问题。
我一直在考虑通过GET / POST /我自己的cookie将用户ID发回服务器,但这是一个丑陋的解决方案和潜在的安全问题。
有任何想法吗?
没有找到相关结果
已邀请:
1 个回复
磐乓铝举