我正在使用新的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登录过程中未执行的页面中也是如此?
由于
答案 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。