返回用户令牌而不是访问令牌

时间:2013-03-27 08:19:44

标签: facebook facebook-graph-api facebook-php-sdk

我正在使用php-sdk通过fb登录我的网站创建一个会话。登录后,用户将被重定向到名为fb_redirect.php的文件。在该页面上,有以下内容:

$facebook = new Facebook(array('appId' => '123456789',
                                    'secret' => '123456789',
                                    'cookie' => true));

$access_token = $facebook->getAccessToken();
//$facebook->setAccessToken($access_token); // you do not need to set the token if there is one, so this should be conditional to if your switching tokens or setting a token from an external sdk.

$access_token 

在这里回显,它显示用户令牌。但是,在另一个页面上,我需要利用我的应用程序请求的publish_actions权限,并将自定义操作发布到用户的时间轴。为此,我需要将访问令牌设置为用户令牌。但是,由于某种原因,在其他页面上,$ access_token始终设置为访问令牌而不是用户令牌。如何手动将其设置回用户令牌?

2 个答案:

答案 0 :(得分:2)

如果您使用服务器端流,则必须将其保存在某个位置(cookie,或服务器端会话或数据库表),并在用户返回时将其加载回来。

答案 1 :(得分:0)

快速而肮脏的方法,这不会处理到期。

if (!$_SESSION['fb_YourAppID_access_token']) {
$access_token = $facebook->getAccessToken();
if ($access_token) {
$_SESSION['your_token'] = $access_token;
}
}else{
$access_token = $_SESSION['fb_YourAppID_access_token'];
$_SESSION['your_token'] = $access_token;
}

这将在浏览器中查找现有令牌,如果没有找到它会询问php sdk当前令牌是什么,如果sdk中有令牌,它会将你的会话令牌设置为当前访问令牌,如果没有将它保存为空白。