Facebook-PHP SDK 3.0: как сохранить сеанс в базе данных после того, как пользователь вошел в систему и предоставил доступ?

Я использую Facebook PHP SDK 3.0

Я хотел бы знать, как я могу сохранить сеанс пользователя в базе данных, чтобы после того, как пользователь предоставит доступ и войдет в систему, я мог сохранить токены доступа в базе данных и использовать их в следующий раз, чтобы пользователю не требовалось войти снова. Сейчас я использую следующий код

 $facebook = new Facebook(array(
            'appId' => APP_ID,
            'secret' => SECRET,
            'cookie' => true
            ));
        $user = $facebook->getUser();

         if(!$user)
        {
             $loginUrl = $facebook->getLoginUrl();

             echo anchor($loginUrl,"login");
        }

        //print_r($_SESSION);
        $user = $facebook->getUser();

        if($user)
        {
            try 
            {
                // Proceed knowing you have a logged in user who's authenticated.
                $user_profile = $facebook->api('/me');
                //print_r($user_profile);
            } 
            catch (FacebookApiException $e) 
            {
                error_log($e);
                $user = null;
            }
        }

Любая помощь приветствуется, спасибо


person koool    schedule 14.06.2011    source источник


Ответы (1)


Срок действия ключей доступа Facebook истекает через некоторое время. Даже если вы сохраните их, и срок их действия еще не истек, они не будут работать, если пользователь не вошел в систему. Если вы хотите получить доступ к учетной записи пользователя Facebook, когда пользователь находится в автономном режиме, вам необходимо разрешение «offline_access».

person Elad Lachmi    schedule 14.06.2011
comment
примечание: я бы не рекомендовал запрашивать разрешение offline_access, если оно вам действительно не нужно. Пользователи не любят давать это разрешение. - person Elad Lachmi; 14.06.2011
comment
Да, я уже знаю об этом и прошу разрешения, не могли бы вы рассказать мне, как действовать дальше? - person koool; 14.06.2011
comment
Теперь, когда я думаю об этом, токен offline_access не поможет вам снова войти в систему. Он только позволяет вам получать доступ к профилю пользователя на неопределенный срок. Я не уверен, что вы можете автоматически авторизовать пользователя в Facebook, если он не вошел в систему. - person Elad Lachmi; 14.06.2011
comment
Учитывая политику FB в отношении других вещей, я бы сказал, что нет. Поскольку вход пользователя в FB включает создание файла cookie из домена FB, я не уверен, что это вообще возможно. - person Elad Lachmi; 14.06.2011