首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查用户是否已使用新的facebook php api登录

如何检查用户是否已使用新的facebook php api登录
EN

Stack Overflow用户
提问于 2010-07-14 17:36:31
回答 1查看 30.1K关注 0票数 17

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

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

因此,我的应用程序中每个php页面的代码工作方式如下:

代码语言:javascript
复制
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

现在你可以看到,这种工作方式将每个页面转发到登录url,虽然它有效,但它也很慢,会将&session={bla}字符串附加到非常单一的url。

我需要一种方法来检查一个用户已经登录在哪里,然后我将他重定向到登录页面。但是我在php api中找不到这样的方法。做这件事最好的方法是什么?

编辑

这似乎起了作用。

代码语言:javascript
复制
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/>" ;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-15 10:36:53

如果我正确地阅读了您的代码,那么只有在没有会话返回的情况下,您才会执行重定向?根据Facebook's example中的评论,即使你得到了一个会话,你也不能假设它仍然有效。只有尝试需要登录用户的API调用,您才能确定。这是我见过的可靠地确定登录/注销状态的最好方法。

代码语言:javascript
复制
if ($session) {
  try {
    $me = $facebook->api('/me');
    if ($me) {
      //User is logged in
    }
  } catch (FacebookApiException $e) {
    //User is not logged in
  }
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3244912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档