我已经为我的网站用户整合了离线墙贴,他们将FB帐户与用户详细信息相关联。我在我的数据库中存储了FB-id,FB-Access令牌,并使用我在网站中集成了feed-wall的PHP-SDK库。所有用户都在facebook墙上收到消息,一切都很顺利。但今天所有事情都是徒劳的,因为它会引发各种错误。我一直在寻找更多文档,但无法找到解决此问题的确切相关解决方案。
我用于FB-Wall Posting的代码行
$usid=$pageinfo['user']['id_facebook'];
$accestoken=$pageinfo['user']["facebook_accesstoken"];
if($pageinfo['user']['user_fbtoken']=='1')
$attachment = array(
'access_token' => $accestoken,
'message' => "myTaste || real restaurant reviews, share your taste on myTaste",
'name' => "My Favorite Restaurant is ".$business['name'].$business['location']['city']."-What is yours? ",
'link' => $business['personal_url'],
'description' => "",
'picture'=> "http://googima.com/images/mysite.gif"
);
$facebook->api("/".$usid."/feed", "post",$attachment);
}
错误讯息:
Uncaught OAuthException: Error validating access token: Session has expired at unix time
Uncaught OAuthException: (#210) User not visible thrown in /hsphere/local/home/mysite.com/include/3rdparty/facebook-php-sdk/src/facebook.php
进行此离线墙贴的主要想法是,每次在网站上进行一些评论时,用户都不会要求FB登录。它需要使用我们存储在用户表中的FB详细信息自动发布。
答案 0 :(得分:4)
授予publish_stream
权限后,无需access_token
。所以即使没有有效的会话(只是一个例子),删除它并使用这样的东西也会有效:
$params = array(
'message' => "Test Message",
'picture'=> "http://path/to/image.jpg"
);
$post_id = $facebook->api("/$uid/feed", "post",$params);
有关更多信息,请参阅此answer(编辑4)。感谢@zerkms获取此信息btw!
答案 1 :(得分:0)
访问令牌在facebook oauth实现中不是永久性的。您需要在工作会议开始时续订