0

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

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

如果我回到索引页面,我会得到一个新的访问令牌,一切都会再次正常运行......持续 2 小时。

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

感谢您帮助这个菜鸟。

4

3 回答 3

1

您必须将用户重定向到具有授权代码的页面。如果您的用户未取消对 app 的授权,则不会出现 Oauth 对话框。

有关更多信息,请 访问访问令牌和处理

于 2012-11-26T09:13:46.677 回答
0

您可以try / catch在代码中放置一个块。

将每个 Facebook API 调用放在这样的块中,如果发生异常,您可以通过以下方式将用户重定向到正确的资源header('Location: <url>');

try {
  # FB API call 
} 
catch(OAuthException e) {
  header('Location: <url>');
}
于 2012-11-25T00:10:13.897 回答
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>";
}
于 2012-11-25T15:45:25.657 回答