Facebook PHP SDK访问令牌过期时重定向到索引页面

时间:2012-11-24 22:37:29

标签: facebook oauth-2.0 facebook-php-sdk fatal-error

我正在使用Facebook PHP SDK的网站上工作。它工作得很好,2小时后,每当我试图进入网站上的一个常规页面时,我都会...

 Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user.

如果我回到索引页面,我会获得一个新的访问令牌,一切正常...再过2个小时。

当访问令牌过期时,我可以将哪些代码放在我的网页上以重定向到索引页面?

感谢您帮助这个菜鸟。

3 个答案:

答案 0 :(得分:1)

您必须将用户重定向到具有授权代码的页面。 如果您的用户未被授权应用程序,则不会显示Oauth对话框。

有关更多信息,请访问 Access Token & Handling

答案 1 :(得分:0)

您可以在代码中添加try / catch块。

将每个Facebook API调用置于此类块中,如果发生异常,您可以通过header('Location: <url>');将用户重定向到正确的资源:

try {
  # FB API call 
} 
catch(OAuthException e) {
  header('Location: <url>');
}

答案 2 :(得分:0)

有一个类似这样的文件并将其包含在您的网页中。

$facebook = new Facebook(array(
  'appId'  => "app id",
  'secret' => "app secret",
));

$user = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl();

if ($user) {
  try {
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);   
  }
}
else {
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
}