0

我正在构建一个使用 php facebook 库的网站。在每个页面的开头,我都会使用 $facebook->getLoginStatusUrl($params) 函数检查用户是否已登录(或尝试)。我遇到的问题是,检查该函数的唯一真正方法是让用户根据他们的状态重定向到一个页面(通过将他们引导到该函数返回的 url)。我不能使用 file_get_contents 或 cURL,因为该函数返回的 URL 使用 https。他们无论如何我可以使用服务器端方法获取该 URL 的内容吗?或者是通过重定向做到这一点的绝对唯一方法?我更希望不要将此作为客户端操作(通过 Javascript)。有任何想法吗?

4

2 回答 2

0

您可以使用 facebook getUser() 函数来检查用户是否已登录并已授予您网站的权限。之后,您可以使用 getLoginUrl() 或 getLogoutUrl() 向用户显示右键:

$user = $facebook->getUser();    

if (!$user)
{
  $loginUrl = $facebook->getLoginUrl(array(
    'redirect_uri' => REDIRECT_URL,
    'scope' => APP_PERMS,
    'display' => 'page'
  ));

  //do something with $loginUrl, for example:
  echo '<a href="'.$loginUrl.'">Login with facebook</a>';
}
else
{
  //check that this user is still valid
  $realUser = $facebook->api('me');

...

您可以在 facebook 文档中了解有关此功能的更多信息:

https://developers.facebook.com/docs/reference/php/

于 2012-10-24T13:51:18.240 回答
0

他们无论如何我可以使用服务器端方法获取该 URL 的内容吗?

这对您没有帮助,因为客户端用于登录 Facebook 的不是您的服务器,而是他的浏览器。

因此,必须在他们的浏览器中检查用户是否登录——这就是浏览器被重定向到 Facebook 的原因,因为这是读取 Facebook 域下设置的 cookie 的唯一方法。

我更希望不要将此作为客户端操作(通过 Javascript)。

由于重定向,它已经是一种客户端操作。

绝对没有办法让您的服务器单独判断用户是否在浏览器中登录 Facebook。

于 2012-10-24T15:50:34.460 回答