我正在努力找到一种方法来检测用户是否未连接到我的应用程序,我想向活动"查看"发送一个"项目",它工作得很好,但他们必须先单击登录链接,当只是重新加载页面并且他们已登录时。
如何使此操作自动发生?如何检查用户是否已连接到应用程序?我已经尝试了以下代码,但是未连接的用户只会得到一个空白页。
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
// Check if logged in
if($user_id) {
$params = array(
'ok_session' => 1, // Logged in and connected
'no_user' => 2, // Logged out of facebook
'no_session' => 3, // Logged in but not connected
);
$next_url = $facebook->getLoginStatusUrl($params);
if($next_url == 2 || $next_url == 3){
header('Location: '.$facebook->getLoginUrl(array('scope' => 'publish_stream')));
}
} else {
// Not logged in
header('Location: '.$facebook->getLoginUrl(array('scope' => 'publish_stream')));
}
似乎没有检查用户是否已连接的功能,所以我使用了getLoginUrl
功能。
$user_id
由$user_id = $facebook->getUser();
提供
如果我们在这里谈论画布/页面选项卡应用程序,那么您正在寻找的信息位于您的应用程序在初始加载时传递的signed_request
参数中。
如果没有 - 在Facebook的"外部",PHP SDK无法知道是否有用户访问过您的页面之前使用过您的应用程序,如果没有为您的域设置任何cookie
。您可以使用 JS SDK 之外的FB.getLoginStatus
- 这将向 Facebook 发出跨域请求以查看用户是否已登录,并且可以在您的域下设置适当的 cookie,让 PHP SDK 在下一次请求您的服务器时也会注意到。