2

我正在使用 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 总是设置为访问令牌而不是用户令牌。如何手动将其设置回用户令牌?

4

2 回答 2

2

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

于 2013-03-27T08:31:35.557 回答
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 中有令牌,它将您的会话令牌设置为当前访问令牌,如果没有,它将保存它空白的。

于 2013-03-27T09:34:27.497 回答