【发布时间】:2012-12-11 21:20:03
【问题描述】:
我有一个 facebook 画布应用程序,并且正在使用最新版本的 PHP SDK。
我有一个看起来像这样的工作流程。用户登录 facebook 并从他们的应用列表中点击应用。
用户登陆表单页面->点击提交->用户没有看到它通过表单处理页面并尝试发布到墙上->标题重定向到邀请页面。
流程有效,因为我内置了透明的错误处理。但是,在第一次通过流程时没有墙柱。重复点击 facebook 图标进入用户主页,点击用户应用列表中的应用链接。
用户登陆表单页面 -> 点击提交 -> 用户没有看到它通过表单处理页面并尝试发布到墙上 -> 标题重定向到邀请页面。
这一次,每次都在它工作之后。
我在第一次尝试时收到的错误是会话 access_token 无效。之后的每一次,只要用户不注销它就可以工作,我永远不会得到一个坏的令牌。
在墙贴代码所在的表单处理页面上:
$user = null;
require "/usr/home/app/www/fb/facebook.php";
//facebook application
$fbconfig['appid' ] = "xxx";
$fbconfig['secret'] = "xxx";
$fbconfig['baseUrl'] = "http://www.app.com/fb";
$fbconfig['appBaseUrl'] = "http://apps.facebook.com/app";
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => $fbconfig['appid'],
'secret' => $fbconfig['secret'],
));
//session_write_close();
$user = $facebook->getUser();
try {
$publishStream = $facebook->api("/me/feed", 'post', array(
'message' => "mess",
'link' => 'http://apps.facebook.com/app',
'picture' => 'http://images.app.com/img.jpg',
'name' => 'name',
'description'=> 'des'
)
);
} catch (FacebookApiException $e) {
d($e);
}
header("Location: https://www.app.com/fb/invite.php");
这是为了遗漏错误信息而截断的确切错误:
FacebookApiException Object
(
[result:protected] => Array
(
[error] => Array
(
[message] => An active access token must be used to query information about the current user.
[type] => OAuthException
)
)
....
【问题讨论】:
标签: php facebook session oauth access-token