PHP facebook SDK中的过期授权码

时间:2014-05-10 17:09:39

标签: php facebook

我正在使用新的4. * facebook php SDK,我遇到了问题! ;)

基本上我想找到一种方法,在第一次重定向后,当用户登录到Facebook 后发回我的网站时,向图api发出请求。在那种情况下,我(在我的index.php中):

$h = FacebookRedirectLoginHelper("blablabla");
$request = new FacebookRequest($h->getSessionFromRedirect(), 'GET', '/me');
$me = $request->execute()->getGraphObject();

它完美无缺,我可以打印有关已登录用户的日期。

我的问题是,如果我重新加载(f5)页面index.php,那么我会得到一个例外:

Fatal error: Uncaught exception 'Facebook\FacebookAuthorizationException' with message 'This authorization code has expired.' in /home/nourdine/development/faisbuk/vendor/facebook/php-sdk-v4/src/Facebook/FacebookRequestException.php:87 

所以我的问题是:我应该在哪里获得新的授权代码,以便与经过身份验证的用户进行新的图形api调用,即使在Facebook登录过程中未执行的页面中也是如此?

由于

2 个答案:

答案 0 :(得分:3)

您不需要新的授权码。你需要的是使用相同的会话。 $h->getSessionFromRedirect()返回一个会话。您下次要使用的那个会话。

答案 1 :(得分:1)

具体而言,这段代码是需要实现的:

    // see if we have a session in $_Session[]
if( isset($_SESSION['token']))
{
    // We have a token, is it valid? 
    $session = new FacebookSession($_SESSION['token']); 
    try
    {
        $session->Validate($appid ,$secret);
    }
    catch( FacebookAuthorizationException $ex)
    {
        // Session is not valid any more, get a new one.
        $session ='';
    }
}

此页面提供了完整的工作样本:Facebook SDK 4.0.0 for PHP: A working sample to manage sessions