我有一个facebook canvas应用程序,我使用的是最新版本的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
)
)
....
答案 0 :(得分:0)
也许您可以尝试offline_access
权限来获取非终止访问令牌?
答案 1 :(得分:0)
所以,在将我的头撞在墙上一周之后......我想通了! 我在第一页的末尾添加了一个脚本以重置滚动。
<script>
FB.init({
appId : 'appid',
status : true,
cookie : true,
xfbml : true,
});
</script>
在下一页上是处理,在我到达下一页出现邀请屏幕之前,该工作无法正常工作。在那个页面上是FB.init,
function callAppReq() {
FB.init({
appId : 'appid',
cookie: true,
channelUrl : 'https://apps.facebook.com/app',
oauth : true
});
此页面加载后,每次此应用程序都正常工作。我在挠头,无法弄明白。直到我注意到,“oauth:true”是唯一没有在第一页上调用的事情。所以,在我需要让滚动条消失的那个愚蠢的脚本中,我添加了“:oauth:true”......
<script>
FB.init({
appId : 'appid',
status : true,
cookie : true,
xfbml : true,
oauth : true
});
</script>
罗'看哪,它现在有效。我非常沮丧的是,这段代码破坏了一些东西,但非常高兴我现在已经修复并了解问题是什么!!!