检查用户是否已登录的最有效方法是什么?

时间:2012-02-14 17:04:55

标签: php facebook facebook-graph-api facebook-php-sdk

我对Facebook SDK和API非常熟悉,但我仍然发现自己遇到了很多麻烦。最重要的是,速度!

每次执行'api'调用时,都需要额外的一两秒才能返回响应。因此,我想知道检测用户是否通过Facebook登录的最有效和最快捷的方法是什么。我目前正在使用:

        // Get the User ID of the facebook user
        $facebook_user_id = $this->facebook->getUser();

        // If a facebook user exists, then try to get their information
        if($facebook_user_id){
            try{
                // Get the facebook users details
                $facebook_user_name = $this->facebook->api('/me','GET');
                $this->facebook_logged_in = $facebook_user_id;
                return $this->unique_id = $this->facebook_logged_in;
            }catch(FacebookApiException $e){
                error_log($e);
                return false;
            }
        }else{
            return false;   
        }

这在一定程度上有效,但速度非常慢。我真的想知道用户是否登录并且他们的会话是有效的。还有另一种方法可以做到这一点吗?为什么这么慢?

1 个答案:

答案 0 :(得分:1)

在大多数facebook的PHP示例中,他们倾向于使用$uid = $facebook->getUser();看看 http://developers.facebook.com/docs/reference/php/facebook-getUser/

然后他们检查$ uid是否为0,然后没有登录。如果不是0,那么你有他们的facebook用户ID。

当你真的不需要时,看起来你正在另外调用/me命令。另外,为了使/ me调用更快,请指定fields=Comma,List,Of,Fields,You,Need以便查询可以更快地运行。但如上所述,只需获取登录状态,请在$ uid中检查0。