【发布时间】:2014-01-08 08:26:17
【问题描述】:
我的脸书有这个功能
public function link2(){
global $config;
$facebook = new Facebook(array(
'appId' => $config['facebook_appId'],
'secret' => $config['facebook_secret'],
'cookie' => true
));
return $facebook;
}
然后我这样做是为了得到令牌
if(isset($_SESSION['fb_'.$config['facebook_appId'].'_access_token'])){
$accesstoken = $_SESSION['fb_'.$config['facebook_appId'].'_access_token'];
}else{
$accesstoken = $facebook->getAccessToken();
}
并将其存储在 DB 中,但在我注销并再次登录并再次调用 ALBUMS 后出现错误
A user access token is required to request this resource
我在我的 logout.php 文件中做session_destroy,我想知道会话与此有何关系,如果我将我的 logout.php 文件更改为仅取消设置 userId 变量,那么调用对我有用。
我错过了什么吗?
【问题讨论】:
-
你能确认令牌保存到数据库吗?以及如何将访问令牌设置回 Facebook 对象?多一点你的代码可以帮助你得到答案。
-
@m_poorUser 是的,它已保存到数据库中,"你如何将访问令牌设置回 Facebook 对象?我没有这样做,不确定这是什么
-
我的意思是你如何使用你在注销并再次登录后保存数据库的访问令牌?
-
@m_poorUser 查询数据库并获取令牌然后执行此操作 $facebook = new Facebook(array( 'appId' => $config['facebook_appId'], 'secret' => $config[' facebook_secret'], access_token=>$tokenFROMDB ));
-
我认为它与会话无关,因为当您第一次登录并获取访问令牌时,它存储在会话中,您正在使用它。如果您销毁会话,下次用户登录时令牌会消失并从数据库中提取,对吗?因此,如果您在销毁会话时遇到问题,那么它必须与其他东西相关。 Session 完全按照您的场景执行它应该做的事情。
标签: php mysql facebook session oauth-2.0