我想重定向他们连接到Facebook的用户,而不是他们没有连接到facebook的烦人用户 . 怎么做?我正在使用此代码从facebook获取数据 . 此代码在我的页面的第一行基于Wordpress执行 .
this_code_php:
<?PHP
session_start();
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'my_number_here',
'secret' => 'my_number_here',
'cookie' => true
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
//echo '$logout '.$logoutUrl;
} else
{ $loginUrl = $facebook->getLoginUrl();
//echo '$login '.$loginUrl;
echo "<script type='text/javascript'>top.location.href = '$logoutUrl';</script>";
}
?>
CONNECTING到facebook和LOGGING与我的应用程序有区别 . 请注意,如果我知道用户已连接到Facebook(例如已打开Facebook标签),我想自动将他重定向到我的页面,包含所有Facebook数据 . 但我不会打扰Facebook登录页面的其他用户(不是Facebook注册) . 如果他们已连接 - 好的 - 让我们只需用Facebook数据重定向到我的页面 . 如果他们不是 - 忘记Facebook登录并忘记Facebook数据 - 避免Facebook . 问题是行:echo“top.location.href ='$ logoutUrl';”;
什么节目呢?如果用户连接到Facebook - 程序接下来重定向,用户不知道是否采取了任何操作 . 但是,如果用户没有连接到显示用户登录页面的Facebook程序,即使是用户,他们也没有在Facebook上注册 .
我想用这一行替换上面的行:if(/ user is connected /)echo "top.location.href = '$logoutUrl';";
但我不知道如何检查用户目前是否连接到Facebook?如果有可能在PHP或我必须链接PHP和Javascript,这有点困难 . 怎么做?
3 回答
CBroe是对的 . 您必须检查客户端的用户状态 . 为了向CBroe所说的添加一些细节,该文档为您提供了有用的示例 .
我想发布这个作为对前一个答案的评论来支持它,但是评论形式忽略了换行符......
另一个选项是用户使用$ facebook-> getUser() . 如果没有登录Facebook,则返回0 .
对于尚未连接到您的应用程序的用户,您绝对不会获得任何信息 - 即使他们当前是否登录到Facebook .
用户连接到您的应用后,您可以使用JavaScript SDK中的
FB.getLoginStatus
来确定他们当前是否登录到Facebook .这必须在客户端完成,因为只有JS SDK能够发出跨域请求来检查在facebook.com域下设置的cookie - 这在服务器端是不可能的 .
您已经确定了客户端的状态,PHP SDK可以在下一个请求中接收它 .