【问题标题】:Facebook Fatal error Session has expiredFacebook 致命错误会话已过期
【发布时间】:2012-11-08 17:16:16
【问题描述】:
<?php
require_once"includes/strings.php";
require_once"php/function.php";
require_once"php/config.php";
require_once"php/app.php";

$currentFBuserid = "0";

///////FACEBOOK GET USER INFORMATION
session_start();
// Enter the app id and secret below
define('YOUR_APP_ID', '$fbAppID');
define('YOUR_APP_SECRET', '$fbAppSecret');

require_once"php/fbsdk/src/facebook.php";

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

$userId = $facebook->getUser();
if($userId){
    $userInfo = $facebook->api('/' + $userId);
           }

好的,问题很简单,大约每两个小时我猜会话在我的网站上过期,并且错误“致命错误:未捕获的 OAuthException:验证访问令牌时出错:会话已在 unix 时间 1352329200 过期。

当前的unix时间是1352330589。在/home/######/public_html/php/fbsdk/src/base_facebook.php第1238行抛出

无论我浏览这个网站多久,我都很难找出问题所在。

顺便说一句:(刷新页面解决问题)

我真的需要帮助。 谢谢!

【问题讨论】:

    标签: php facebook facebook-php-sdk


    【解决方案1】:

    好的,问题很简单,大约每两个小时我猜会话在我的网站上过期,并且错误“致命错误:未捕获的 OAuthException:验证访问令牌时出错:会话已在 unix 时间 1352329200 过期。

    使用客户端流程获取的用户访问令牌将在两小时后过期。

    您可以扩展它们,也可以使用服务器端流程——两者都会生成一个有效期为 60 天的令牌。

    https://developers.facebook.com/roadmap/offline-access-removal/

    (最新版本的 PHP SDK 有一个名为 setExtendedAccessToken 的方法用于扩展短期令牌。)

    顺便说一句:(刷新页面解决问题)

    如果您使用 JS SDK 进行登录,那么刷新当然会使其向 Facebook 发出新的跨域请求,并将获得一个新的短期访问令牌。

    【讨论】:

    • 太棒了!你是说如果我想要一个长寿令牌,我不能同时使用 JS SDK 和 PHP SDK?无论哪种方式,我都会尝试告诉你是否成功
    • 不,你当然可以一起使用它们——但是如果你获得了客户端的访问令牌(使用 JS SDK),它会是短暂的,并且如果需要,您必须在服务器端将其换成长期存在的。
    • 非常感谢您为大 ole 复选标记做好准备:P
    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2011-10-06
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多