如何检查用户是否使用新的Facebookphp API登录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (26)

我正在使用PHP API将旧的FB应用程序迁移到新的图形API

我有两个页面:公共的(不需要用户登录)和私人的

所以我的应用程序中的每个单独的PHP页面的代码工作如下:

if (this_page_requires_user_login){
      $facebook = new Facebook(...) ;
      $session = $facebook->getSession ;
      if (!$session){
              $url =$facebook.getLoginUrl(array(next => current_page );
              echo "<fb:redirect url=$url/>" ;

}
// the rest of the code continues here

现在你可以看到,这种工作方式将每个页面都转发到登录网址,并且在工作时也很慢,将&session = {bla}字符串附加到单个网址。

我需要一种方法来检查用户已登录的位置,然后将其重定向到登录页面。但我无法在php api中找到这样的方法。什么是最好的方法来做到这一点?

这似乎是可行的:

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
       // here comes your code for user who is logged in
    }
  } catch (FacebookApiException $e) {
    login()
  }
}else{
 login()
}

function login(){

  $url =$facebook.getLoginUrl(array(next => current_page );


      echo "<fb:redirect url=$url/>" ;
}
提问于
用户回答回答于

这是我见过的可靠地确定登录/注销状态的最佳方式。

if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}

扫码关注云+社区

领取腾讯云代金券