Facebook错误验证访问令牌:会话已在unix时间到期

时间:2011-04-29 04:30:34

标签: php facebook

我已经为我的网站用户整合了离线墙贴,他们将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详细信息自动发布。

2 个答案:

答案 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实现中不是永久性的。您需要在工作会议开始时续订

更多详情请见:http://developers.facebook.com/docs/authentication/