В настоящее время я занимаюсь разработкой приложения для холста Facebook, в котором есть несколько вкладок с использованием инфраструктуры Yii.И есть проблема в установке компонента CWebUser для приложения.Я устанавливаю компонент user
в методе SiteController
actionIndex()
.После установки этого я хочу перенаправить на определенную вкладку страницы в моем приложении.На перенаправленной странице я хочу использовать информацию о пользователе, но информация о компоненте пользователя потеряна.Код для SiteController ниже:
<?php
class SiteController extends Controller{
// other functions
public function actionIndex(){
// call the Facebook PHP SDK to getUser();
$fbHelper = new FacebookHelper();
$userInfo = $fbHelper->getCurrentInfo();
Yii::app()->user->setId($value['id']);
Yii::app()->user->setName($value['name']);
// further i set some more values that are required by the app using setState()
// query the db to find out what the user was doing last time
// and then redirect accordingly to the next page
$this->redirect(array('pagelist/index'));
}
}
Код для новой страницы:
<?php
class PagelistController extends Controller{
public function actionIndex() {
$this->render('index');
}
}
Код в представлении index.php для PagelistController:
<?php
echo "Hi ".Yii::app()->user->name;
// Yii::app()->user->getIsGuest(); returns true, which shouldn't be the case.
Таким образом, очевидно, что пользовательская информация теряется при перенаправлении.Теперь я понял, что PHP SDK Facebook использует сессии для хранения своего экземпляра, как и компонент CWebUser.Поэтому я предполагаю, что FB PHP SDK очищает сеанс от перенаправлений, что также приводит к очистке сеанса приложения Yii.Или что-то близкое к тому, что происходит !!Итак, как же нам сохранить информацию о пользователе при жизни приложения?Должен ли я изменить FB PHP SDK, чтобы он использовал уже сгенерированный сеанс приложения yii?Или, может быть, помешать очистке сессии на перенаправлениях?Ценю любую помощь. Редактировать: Я использовал сеансы с кодом ниже, включенным в файл конфигурации main.php, в качестве компонента приложения.Однако, если этот код удален, все работает нормально, есть идеи, почему это предотвращает сохранение сессии?
'session'=>array(
'sessionName'=>'PageType',
'autoStart'=>true,
'cookieMode'=>allow,
'class' => 'system.web.CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'tbl_session',
),