检查是否连接到应用程序,如果没有重定向到使用Facebook PHP SDK / API登录


Check if connected to app, if not redirect to Login with Facebook PHP SDK / API

我正在努力找到一种方法来检测用户是否未连接到我的应用程序,我想向活动"查看"发送一个"项目",它工作得很好,但他们必须先单击登录链接,当只是重新加载页面并且他们已登录时。

如何使此操作自动发生?如何检查用户是否已连接到应用程序?我已经尝试了以下代码,但是未连接的用户只会得到一个空白页。

$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 在下一次请求您的服务器时也会注意到。