首页 文章

如何检查用户是否连接到Facebook?

提问于
浏览
3

我想重定向他们连接到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 回答

  • 0

    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

    另一个选项是用户使用$ facebook-> getUser() . 如果没有登录Facebook,则返回0 .

  • 3

    对于尚未连接到您的应用程序的用户,您绝对不会获得任何信息 - 即使他们当前是否登录到Facebook .

    用户连接到您的应用后,您可以使用JavaScript SDK中的 FB.getLoginStatus 来确定他们当前是否登录到Facebook .

    这必须在客户端完成,因为只有JS SDK能够发出跨域请求来检查在facebook.com域下设置的cookie - 这在服务器端是不可能的 .

    您已经确定了客户端的状态,PHP SDK可以在下一个请求中接收它 .

相关问题