Php 通过应用程序[访问令牌问题]在facebook fanpage上以页面形式发布

Php 通过应用程序[访问令牌问题]在facebook fanpage上以页面形式发布,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我目前正在创建一个网页,用户可以在这个网页上添加新闻。我想让他在他的fb粉丝页面上添加和页面本身相同的新闻。以下是负责它(工作)的代码: 问题实际上是访问令牌过期了。这个应用程序的用户不会经常使用它,而是要经过很长一段时间 在将任何内容发布到墙上之前,是否有任何方法可以动态生成此令牌 您可以在FacebookSession类中调用getLongLivedSession 返回由于扩展短期访问令牌而产生的新Facebook\FacebookSession。此方法将发出网络请求。如果您知道您已经有一个

我目前正在创建一个网页,用户可以在这个网页上添加新闻。我想让他在他的fb粉丝页面上添加和页面本身相同的新闻。以下是负责它(工作)的代码:

问题实际上是访问令牌过期了。这个应用程序的用户不会经常使用它,而是要经过很长一段时间


在将任何内容发布到墙上之前,是否有任何方法可以动态生成此令牌

您可以在
FacebookSession
类中调用
getLongLivedSession

返回由于扩展短期访问令牌而产生的新Facebook\FacebookSession。此方法将发出网络请求。如果您知道您已经有一个长期会话,那么您不需要调用它。截至2014年3月,您唯一一次获得短期会话的机会是来自Facebook SDK for JavaScript。如果此会话不是短期的,则此方法将返回$this。一次长时间的会议大约需要几个月。短命会话的时间大约为小时。您可以通过检查会话信息中的过期日期来确定会话是短期的还是长期的,但这并不是一件精确的事情


您最终必须通过重新授权用户来更新它们。

我已将此方法的结果分配给$session变量buuut。。。我仍然收到错误“验证访问令牌时出错:会话已过期[…]”当它过期时,您需要重新验证用户身份(即,他们必须再次通过facebook登录到您的应用程序)
        $access_token =  'my_access_token';
        FacebookSession::setDefaultApplication('APP_ID', 'APP_SECRET');
        $page_id = 1;

        $session = new FacebookSession($access_token);
        $page_access_token = (new FacebookRequest( $session, 'GET', '/'.$page_id, array( 'fields' => 'access_token' ) ))->execute()->getGraphObject()->asArray();

        $params =  array(
            'name'          => 'test',
            'description'   => 'hellooo',
            'message'       => 'bleble',
            'caption'       => 'test',
            'picture'       => '',
            'published'     => true,
        );
        $params['access_token'] = $page_access_token['access_token'];

        $post = (new FacebookRequest($session, 'POST', '/'.$page_id.'/feed', $params))->execute()->getGraphObject()->asArray();