0

我想在 php sdk 中获取当前登录的 facebook 用户。这是我尝试过的:

$facebook = new \Facebook(array(
        'appId' => 'XXXXXXXXXXX',
        'secret' => 'XXXXXXXXXXXXXXXXXXXXX',
    ));
$user = $facebook->getUser();
var_dump($user);
if ($user) {
   $logoutUrl = $facebook->getLogoutUrl();
   echo $logoutUrl;
} else {
   $loginUrl = $facebook->getLoginUrl();
   echo $loginUrl;
}

当我用上面的代码加载页面时,即使我登录了 facebook,我也会得到 loginUrl。只有当我在浏览器中加载 $loginUrl 时,我才能获得 facebook 用户。

如何在第一次加载此页面时获取当前用户?

4

2 回答 2

1

看起来您想在没有批准您的应用访问他的信息的情况下显示当前用户。

这是不可能的。为什么?

  1. 使用 Facebook API 需要令牌。
  2. 令牌是特定于用户的,这意味着 Facebook 用户需要连接。
  3. 用户连接到 Facebook 的唯一方法是访问 Facebook.com,然后输入他的凭据。由于您同意这一点,您将了解您的网站必须生成一个链接以重定向到 Facebook.com。
  4. 用户点击链接并被重定向到 FB。连接到他的帐户后,他必须允许您的应用访问他的信息。如果完成,那么当 Facebook.com 成功返回访问令牌时,循环就会关闭。

除非您已经拥有访问令牌,否则您无法绕过登录步骤。因此,你必须使用这个getLoginUrl()东西。

于 2013-09-24T21:25:23.663 回答
0

即使我登录了 facebook,我也会得到 loginUrl。

当然可以——登录到 facebook.com 与登录到您的应用程序完全不同。

只有当我在浏览器中加载 $loginUrl 时,我才能获得 facebook 用户。

那是因为之后用户登录到您的应用程序。

如何在第一次加载此页面时获取当前用户?

仅适用于之前已通过 JavaScript SDK 连接到您的应用程序的用户。

于 2013-09-24T21:29:38.527 回答