Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook PHP SDK会话与Yii CWebUser冲突_Facebook_Session_Yii_Facebook Php Sdk - Fatal编程技术网

Facebook PHP SDK会话与Yii CWebUser冲突

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

我目前正在使用Yii框架开发一个Facebook画布应用程序,它有多个选项卡。
为应用程序设置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();
}