2011-10-07 42 views
3

我知道这里有类似的问题,但似乎没有解决我遇到的问题,或者指的是较早的非OAuth版本的SDK。用户在Facebook上注销,JS SDK停止工作

我使用的是由Facebook提供的JS和PHP SDK。使用JS完成身份验证,然后设置一个允许PHP SDK进行身份验证的cookie,如Facebook推荐的那样。

直到用户在他们的网站上注销Facebook(即他们不在我的网站上使用FB.logout方法)为止,这种方式非常有效。 auth.statusChange,auth.authResponseChange或auth.logout方法都不会立即触发,也不会触发下一个页面加载。但是,我可以看到即使我点击Facebook站点(但不是用于签名请求的fbsr_xxxxxxxxxx),cookie也正在更改。

我的困难是,下一页加载,我不知道用户退出Facebook。由于我仍然拥有带访问令牌的'fbsr_xxxxxxxxxx'Cookie,因此我可以继续通过PHP SDK进行API调用,但JS SDK完全没有响应。方法要么抱怨没有访问令牌,要么没有完全运行它们的回调函数。

我在这里错过了一些完全明显的东西吗?我完全困惑,所以任何帮助真的很受欢迎。

FuzzyDunlop

+1

自从转到誓言后,我遇到了同样的问题。你有没有在这个问题上取得进展? – charlie

+0

恐怕不是真的。我想我可能不得不手动启动FB.Cookie.clearSignedrequestCookie()方法。另外,是的,在使用OAuth版本之前,我没有遇到这个问题。 – dmnc

+1

听起来,您可能遇到了您的auth.authResponseChange代码问题。你能发布你试图使用的?它会立即触发了我 – Abby

回答

-1

你需要有一个非过期的令牌,你可以得到使用脱机访问权限,这样就可以从你的应用程序存取权限的用户的详细信息,即使用户退出Facebook的,那太工程直到用户不改变他的密码,如果他这样做了,你又需要 请求一个新的令牌。

+0

编辑回答删除txt spk的响应。 – Spudley

+0

拥有一个未到期的令牌可以让我继续使用PHP API,这并不是我的问题。我遇到的问题是,当用户注销Facebook时,JS SDK停止工作(即使使用非到期令牌),但我没有收到此通知。 – dmnc

+1

我不确定你真的需要离线访问来解决这个问题。有更好的方法,这对我来说似乎有点矫枉过正,离线访问基本上建议你的用户,你想在他们睡觉时他们的数据... – Abby