我正在使用PHP API将我的旧FB应用程序迁移到新的图形应用程序接口
我有两个页面:公共页面(不需要用户登录)和私有页面(需要用户登录)
因此,我的应用程序中每个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
现在你可以看到,这种工作方式将每个页面转发到登录url,虽然它有效,但它也很慢,会将&session={bla}字符串附加到非常单一的url。
我需要一种方法来检查一个用户已经登录在哪里,然后我将他重定向到登录页面。但是我在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/>" ;
}
发布于 2010-07-15 10:36:53
如果我正确地阅读了您的代码,那么只有在没有会话返回的情况下,您才会执行重定向?根据Facebook's example中的评论,即使你得到了一个会话,你也不能假设它仍然有效。只有尝试需要登录用户的API调用,您才能确定。这是我见过的可靠地确定登录/注销状态的最好方法。
if ($session) {
try {
$me = $facebook->api('/me');
if ($me) {
//User is logged in
}
} catch (FacebookApiException $e) {
//User is not logged in
}
}
https://stackoverflow.com/questions/3244912
复制相似问题