我目前正在建立一个网站,我的Wordpress主题已经支持通过JS SDK登录Facebook。以下是我的FB.init
window.fbAsyncInit = function(){
FB.init({
appId : 'xxxxxxxx'
, status : true
, cookie : true
, xfbml : true
, oauth : true
, version : 'v2.2'
});
};
由于我想在HTML上输出内容之前做一些背景调查,我也使用PHP SDK。 (我没有使用PHP进行登录,因为有更多的重定向,而JS是直接的(弹出,你已经完成)。
要发出请求,我使用FacebookJavascriptLoginHelper
和以下代码来获取请求所需的会话。
$helper = new FacebookJavaScriptLoginHelper();
try {
$session = $helper->getSession();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(\Exception $ex) {
// When validation fails or other local issues
}
到目前为止一切顺利。每次刷新页面时,我都会从JS SDK中获取一个新的access token
,并在我需要提出请求的情况下使用它。
问题在于注销部分。
如果我使用FB.logout
用户登出Facebook,即使在他的浏览器中也必须再次登录,这是绝对不可接受的。
我可以通过简单地检查是否有登录用户,然后开始要求新的Facebook会话来传递这个“问题”,但这是我应该去的方式吗?
当我登出wordpress时,我仍然可以接收访问令牌并向服务器发出一段时间的请求。我认为接近10-15分钟。之后我没有收到任何东西,必须再次登录。
编辑:我也注意到即使我没有退出,如果我不刷新很短的时间,我也不会session
(access token)
。如果我刷新一次然后第二次我得到一个