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

时间:2012-12-22 23:23:17

标签: php facebook facebook-graph-api facebook-php-sdk facebook-access-token

  

可能重复:
  Implication of Facebook offline_access deprecation

我在这里发布这个问题是因为我无法在任何地方找到答案。

我创建了一个服务器端PHP应用程序,每周在我们的FB粉丝页面上自动发布/展示一个链接到我们的产品之一的链接。

这个脚本在10天前运行良好,现在我们手动调用脚本时出现以下错误:

Fatal error: Uncaught OAuthException: Error validating access token: Session has expired at unix time 1355862507. The current unix time is 1356217401. thrown in /home/webadmin/virtualsheetmusic.com/html/facebook/API/base_facebook.php on line 1249

现在,我已经发现问题出在传递的access_token中,但我无法找到如何使用此应用程序使用的格式生成新的。

以下是我们目前使用的令牌格式:

$fanpagetoken = '<REMOVED ACCESS TOKEN FROM TEXT>';

以下是我们用于在墙上发布的PHP代码:

    #Define vars...
$day = strtotime($today);
$day = date("l, F j, Y", $day);

$deadline = strtotime("+1 week");
$deadline = date("l, F j, Y", $deadline);

// Create our Application instance (replace this with your appId and secret).


$facebook = new Facebook(array(
  'appId'  => $appid,
  'secret' => $secret,
));



$attachment = array(
                    'access_token' => $fanpagetoken,

                    'message' => "Sheet Music Showcase for ".$day.":",
                    'name' => $headline,
                    'caption' => "Showcase Expiration: $deadline",
                    'link' => 'http://www.ourwebsite.com/s/'.$createsession,
                    'description' => 'View the complete high quality PDF sheet music file, listen to related audio files and more!',
                    'picture' => 'http://www.virtualsheetmusic.com/images/icons/new_downloadsHome/'.$mainid.'.gif',
                    'actions' => array(array('name' => 'Learn more...', 
                                      'link' => 'http://www.virtualsheetmusic.com/s/'.$createsession))
                    );


$result = $facebook->api('/oursitefanpage/feed/',
                            'post',
                            $attachment);

如何以该格式生成新令牌?

非常欢迎任何帮助!

提前感谢您的任何想法

最佳, FAB。

1 个答案:

答案 0 :(得分:4)

您的粉丝专页可以使用永不过期的令牌。按照简单的步骤:

  1. 获取管理员(即您的)扩展令牌(2个月有效期)。通过链接获取扩展令牌。完美地运作:

    How to extend access token validity since offline_access deprecation

  2. 使用此令牌,获取页面/应用列表 -

    $facebook->api("/USER_ID/accounts"); 
    
  3. 获取任何页面的永不过期的访问令牌 -

    $facebook->api("/PAGE_ID?fields=access_token");
    
  4. (您可以使用Facebook's Debug Tool检查令牌的有效性。)