17
我现在用的是PHP API如何检查是否用户登录与新的Facebook 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/>" ;
}
如果已经存储访问令牌,并使用它,这是行不通的,因为API调用仍然有效,没有抛出异常,但是当你将其重定向到getLogoutUrl例如,它只是将他们到Facebook的主页,而不是把你送回你的网站 – andrewtweber 2013-03-04 23:00:25
@andrewtweber。谢谢。 – 2013-11-25 12:09:21
你必须解码的网址之前,这就是为什么你不重定向: <?php echo rawurlencode($ logoutUrl); ?> – 2014-02-12 17:03:36