// использование javascript для всплывающего окна для входа в Facebook
FB.login(function(response) {
if (response.authResponse) {
var accessToken = response.authResponse.accessToken;
// получил токен доступа с истечением 1-2 часа
// получил токен доступа в контроллере под названием facebookконтроллер
$request = $this->getRequest();
$params = $request->getParams();
$token=$params['accessToken'];
// получение маркера доступа для расширения до 60 дней
$conf = $this->getConfigs();
$appid = $conf['fbdetails']['appid'];
$secret = $conf['fbdetails']['secret'];
$baseurl = $conf['app']['baseurl'];
// После выполнения приведенного ниже кода у нас будет ответ со временем истечения срока действия токена доступа до 60 дней.
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=".$appid."&client_secret=".$secret."&grant_type=fb_exchange_token&fb_exchange_token=".$token;
// Выше приведен ответ для разбора.
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_URL, $token_url);
$contents = curl_exec($c);
$err = curl_getinfo($c,CURLINFO_HTTP_CODE);
curl_close($c);
$paramsfb = null;
parse_str($contents, $paramsfb);
// после анализа содержимого в приведенном выше коде выполнения сохраняется новый расширенный токен доступа.
$user_session = new Zend_Session_Namespace('fbuser');
$user_session->access_token = $paramsfb['access_token'];
// сохраняется в сеансе.
$this->_redirect('/home');
// Приятного кодирования