2009-02-16 80 views
5

我建立一个谷歌小工具中运行的Facebook Connect应用程序无法正常工作。作为一个小工具意味着应用程序在iframe中运行。在应用程序内部,有一个允许注册用户发表评论的表单。提交是使用AJAX进行的,但是我用普通表单获得了相同的结果。问题是我需要获取用户的Facebook ID。在Firefox中,它工作正常,但在Internet Explorer 7,我得到以下错误:里面的iframe的Facebook Connect应用程序在IE7

'A session key is required for calling this method' 

我认为,这是由于IE处理第三方Cookie的方式,因为如果我去的Internet选项/隐私/高级,并检查覆盖自动cookie处理并接受所有cookie,它工作正常。我无法从javascript中传递Facebook ID,因为任何人都可以篡改它。

编辑:如果我直接打开iframe的内容,应用程序工作正常。问题实际上是由于IFRAME和IE安全模式。

我在做什么错?我该如何解决这个问题?

+0

我打与在第三方网站的覆盖iframe中运行一个Facebook Connect应用程序类似的问题产生,除非我也遇到了Safari和Firefox的问题,如果用户选择不接受第三方cookie。你有没有看到同样的问题,或者我错过了什么? – 2009-04-23 05:05:28

+0

我没有尝试在其他浏览器上阻止第三方Cookie,但这会导致相同的问题。我去打开一个弹出窗口的解决方案。事实上,Facebook现在在弹出窗口中使用了一个“假”弹出窗口,而不是打开另一个窗口,这对我来说没问题。 – 2009-04-24 14:56:44

回答

7

您是否尝试过加入P3P政策?

如果响应设置cookie具有紧凑的政策,IE浏览器将使用它来决定是否允许第三方cookie的..

+0

嗨,我不知道这件事。我会调查。非常感谢! – 2009-02-17 14:49:13

1

我发现了一个可以工作的解决方法,虽然它有点难看:当用户点击'登录'按钮时,它会打开一个弹出窗口,它来自我自己的网站,其中包含Facebook Connect登录按钮。用户登录后,我关闭弹出窗口并重新加载iframe。

这是十分可怕的,因为它打开了两个弹出窗口,但至少它的工作原理。我会检测是否使用javascript启用cookie,如果启用了,我将跳过第一个弹出窗口。

我还是开到更好的解决方案...


编辑:Facebook目前采用的是“假”弹出我的弹出式里面,而不是打开另一扇窗。现在我只有一个弹出窗口,这对我来说可以。

3

我修改我如何检查,如果用户是解决同样的问题在FB连接登录后登录到PHP页面。

因此,他们登录到FB连接与IE7。 下一步,在那里我需要确认他们确实登录到Facebook的我用下面的代码后续的页面加载(注意,facebook- $> require_login()等函数没有工作 - 他们只在IE 7中返回null):

// Validate from Facebook that session is valid and user is logged in. require_once 'facebook/facebook.php'; $facebook = new Facebook(YourAppsAPIKeyPublic, YourAppsAPIKeySecret); $facebook->api_client->session_key = $this->userAPISessionKey; $fb_user_id = $facebook->api_client->users_getLoggedInUser();

$ fb_user_id现在应该有一个有效的FaceBook用户ID。

关于隐私政策和Facebook连接+ IE 7:

虽然这并没有为我工作,这似乎为别人打工。在.htaccess中:

Header append P3P "CP=\"HONK\""

或PHP文件:

header('P3P: CP="CAO PSA OUR"');header('P3P: CP="HONK"');

参考:http://forum.developers.facebook.com/viewtopic.php?id=28636

ASP.NET:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\""); 
} 
相关问题