Facebook PHP SDK会话与Yii CWebUser冲突
我目前正在使用Yii框架开发一个Facebook画布应用程序,它有多个选项卡。Facebook PHP SDK会话与Yii CWebUser冲突,facebook,session,yii,facebook-php-sdk,Facebook,Session,Yii,Facebook Php Sdk,我目前正在使用Yii框架开发一个Facebook画布应用程序,它有多个选项卡。 为应用程序设置CWebUser组件时出现问题。 我正在SiteController的actionIndex()方法中设置user组件。 设置之后,我想重定向到我的应用程序中的特定页面选项卡。 在重定向页面中,我想使用用户信息,但用户组件信息丢失。 SiteController的代码如下: <?php class SiteController extends Controller{ // other funct
为应用程序设置CWebUser组件时出现问题。
我正在
SiteController
的actionIndex()
方法中设置user
组件。设置之后,我想重定向到我的应用程序中的特定页面选项卡。
在重定向页面中,我想使用用户信息,但用户组件信息丢失。
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'));
}
}
我正在使用为facebook connect创建的以下扩展 我发现它很有用,直到现在都没有问题。。甚至我也更新了最新版本的PHP-SDK,并根据我的天性做了一些更改 此扩展使用userIdentity界面将当前登录的facebook设置为默认的CWebUser…尝试使用更新会话,而不是Yii::app()->user->setName,例如:
$cwu = new CWebUser();
$cwu->setState('name','newname');
为了避免FacebookAPI会话和Yii会话之间的冲突,您应该编辑文件facebook.php,并在构造函数内部replace
if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) {
session_start();
}
借
谢谢,我去看看。刚看了一下,乍一看,这就是我注意到的:“一旦用户通过身份验证,他/她的信息将存储在Yii::app()->会话['facebook_user']”。所以我想使用
Yii::app()->user->getName()访问代码>等,但即使这样,这可能会有所帮助,所以谢谢+谢谢,我试试看。但是$cwu在下一个控制器及其视图中不可用,对吗?但是,你知道如何将我的yii应用程序会话与Facebook sdk会话合并吗?我对此一无所知,甚至不确定我问的问题是否正确。嗨,我已经找到了问题发生的原因,我在问题中添加了一段代码。你能检查一下我的编辑并给我一些提示吗?
'session'=>array(
'sessionName'=>'PageType',
'autoStart'=>true,
'cookieMode'=>allow,
'class' => 'system.web.CDbHttpSession',
'connectionID' => 'db',
'sessionTableName' => 'tbl_session',
),
$cwu = new CWebUser();
$cwu->setState('name','newname');
if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) {
session_start();
}
if ((function_exists('session_status') && session_status() !== PHP_SESSION_ACTIVE) || !session_id()) {
Yii::app()->session->open();
}