我想重定向他们连接到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(/ 用户已连接 /)echo“top.location.href ='$ logoutUrl';”;
但我不知道如何检查用户目前是否已连接到Facebook?如果有可能在PHP或我必须链接PHP和Javascript,这有点困难。怎么做?
答案 0 :(得分:3)
CBroe是对的。您必须检查客户端的用户状态。 为了向CBroe所说的添加一些细节,该文档为您提供了有用的示例。
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
// the user is logged in and has authenticated your app
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook,
// but has not authenticated your app
} else {
// the user isn't logged in to Facebook.
}
});
我想将此作为对先前答案的评论发布以支持它,但评论表单忽略了换行符...
答案 1 :(得分:1)
另一种选择是用户使用$ facebook-&gt; getUser()。如果没有登录Facebook,则返回0。
答案 2 :(得分:0)
对于尚未连接到您应用的用户,您绝对不会获得任何信息 - 即使他们当前是否登录到Facebook。
用户连接到您的应用后,您可以使用JavaScript SDK中的FB.getLoginStatus
来确定他们当前是否登录到Facebook。
这必须在客户端完成,因为只有JS SDK能够发出跨域请求来检查在facebook.com域下设置的cookie - 这在服务器端是不可能的。
您已经确定了客户端的状态,PHP SDK可以在下一个请求中接收它。