我使用Facebook登录我的网站上我的Web应用程序(使用Facebook登录)登录我出去
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'XXX', // App ID from the App Dashboard
channelUrl : 'XXX/channel.php', // Channel File for x-domain communication
cookie : true, // set sessions cookies to allow your server to access the session?
frictionlessRequests: true
});
};
的问题是,我得到我的网站上每10-20分钟〜注销。该网站比重新加载,我再次登录。我认为cookie会以某种方式被删除。
有没有办法让cookie长期存在?
我的登录看起来像这样:
FB.login(function(response) {}, {scope:'publish_actions'});
更新:
我的剧本的这部分被称为当用户登录在第一时间:
// triggers on first login
if (isset($_GET['first_login'])) {
if ($me) {
$facebook->setExtendedAccessToken();
$friends = $facebook->api('/me/friends');
$friends = $friends['data'];
if (!empty($friends)) {
// sql
}
$permissions = $facebook->api("/me/permissions");
if(array_key_exists('publish_actions', $permissions['data'][0])) {
$attachment = array(
'message' => 'XXX',
'name' => 'XXX - App',
'link' => 'XXX',
'description' => 'XXX',
'picture'=> 'XXX',
'access_token' => $facebook->getAccessToken()
);
$facebook->api('/'.$facebook->getUser().'/feed', 'POST', $attachment);
// sql
}
header('Location: http:/xxx');
}
}
但我出现错误
Fatal error: Uncaught OAuthException: (#1) An error occured while creating the share thrown in /facebook/base_facebook.php on line 1254
这是由$facebook->api('/'.$facebook->getUser().'/feed', 'POST', $attachment);
当我从$attachment
删除link
-attribute引起的,它的工作原理。链接属性是禁止的还是什么?
谢谢。我查了一下,并收到了长期存取令牌(持续60天)。 我是否需要将它存储在我的数据库的某个地方,或者是现在登录60天的用户? – Chris 2013-04-12 15:07:19
根据它说的文档:“来自此端点的响应将包含长期访问令牌,这将是与原始令牌不同的字符串,因此如果您要存储这些令牌,请替换原来的令牌。”这对我来说意味着你可以将它存储在cookie或其他地方 – TommyBs 2013-04-12 15:12:00
请看看我更新的问题。 – Chris 2013-04-12 15:54:25