Php 获取用户facebook登录状态,但不要';我不想要重定向
我正在建立一个使用php facebook库的网站。在每个页面的开头,我都会使用$facebook->getLoginStatusUrl($params)函数检查用户是否登录到facebook(或尝试登录)。我的问题是,检查该函数的唯一真正方法是让用户根据他们的状态重定向到页面(通过将他们定向到该函数返回的url)。我不能使用file\u get\u contents或cURL,因为该函数返回的URL使用https。我是否可以通过服务器端方法获取该URL的内容?或者说重定向是实现这一点的唯一方法?我更希望不要将此作为客户端操作(通过Javascript)。有什么想法吗?您可以使用facebook getUser()函数检查用户是否已登录,是否已授予您的网站权限。之后,可以使用getLoginUrl()或getLogoutUrl()向用户显示右按钮:Php 获取用户facebook登录状态,但不要';我不想要重定向,php,facebook,api,curl,https,Php,Facebook,Api,Curl,Https,我正在建立一个使用php facebook库的网站。在每个页面的开头,我都会使用$facebook->getLoginStatusUrl($params)函数检查用户是否登录到facebook(或尝试登录)。我的问题是,检查该函数的唯一真正方法是让用户根据他们的状态重定向到页面(通过将他们定向到该函数返回的url)。我不能使用file\u get\u contents或cURL,因为该函数返回的URL使用https。我是否可以通过服务器端方法获取该URL的内容?或者说重定向是实现这一点的唯一方法
$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');
...
$user=$facebook->getUser();
如果(!$user)
{
$loginUrl=$facebook->getLoginUrl(数组)(
'重定向\u uri'=>重定向\u URL,
“范围”=>APP\u PERMS,
'显示'=>'页面'
));
//使用$loginUrl执行某些操作,例如:
回声';
}
其他的
{
//检查此用户是否仍然有效
$realUser=$facebook->api('me');
...
您可以在facebook文档中了解有关此功能的更多信息:
我是否可以通过服务器端方法获取该URL的内容
这对你没有帮助,因为客户登录Facebook时使用的不是你的服务器,而是他的浏览器
因此,检查用户是否登录必须在他们的浏览器中进行——这就是浏览器被重定向到Facebook的原因,因为这是读取Facebook域下设置的Cookie的唯一方法
我更希望不要将此作为客户端操作(通过Javascript)
由于重定向,它已经是一种客户端操作
绝对没有办法让您的服务器单独判断用户是否在其浏览器中登录到Facebook。我已经尝试过,如果它对我有效,我会使用它。出于某种原因,即使我从Facebook注销,$Facebook->getUser()仍然会返回我的facebook ID,这使得测试我是否登录变得毫无意义。这是真的,因为facebook库首先检查Cookie,如果有延迟,直到Cookie变老。这要慢得多,但你可以检查用户是否连接到需要访问令牌的api调用:你可以调用$facebook->api(“/me”)例如,除此之外,这还为您提供了有关用户的更多信息。我已更新了我的帖子,您可以在getUser返回id后检查真实用户,这样页面将更快地响应未登录的用户。我为我的情况想出了一些其他方法,但我认为您所说的有一定的正确性,让我们继续这个