【问题标题】:Redirect to Index page when Facebook PHP SDK Access Token is ExpiredFacebook PHP SDK 访问令牌过期时重定向到索引页面
【发布时间】:2012-11-12 20:07:29
【问题描述】:

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

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

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

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

感谢您帮助这个菜鸟。

【问题讨论】:

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


【解决方案1】:

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

欲了解更多信息,请访问 Access Token & Handling

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      $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>";
      }
      

      【讨论】:

        猜你喜欢
        • 2014-12-04
        • 1970-01-01
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多