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>";

 }
?>

连接到 facebook 和记录到我的应用程序之间是有区别的。请注意,如果我知道该用户已连接到 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,这并不难。怎么做?

4

3 回答 3

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.
  }
 });

我想将此作为对先前答案的评论发布以支持它,但评论表单忽略换行符......

于 2012-12-03T13:43:52.917 回答
1

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

于 2012-12-05T00:17:21.647 回答
0

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

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

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

一旦您确定了它们的客户端状态,PHP SDK 就能够在下一个请求中获取此信息。

于 2012-12-03T13:11:55.933 回答