我在codeigniter中使用Facebook登录身份验证。我已将facebook sdk文件夹放在网站的根目录中,并在视图中使用它,如下所示:
<?php
session_start();
include_once("fblogin/config.php");
include_once("fblogin/includes/functions.php");
if(!$fbuser){
$fbuser = null;
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));
}
else{
$user_profile = $facebook->api('/me?fields=id,first_name,last_name,email,gender,locale,picture');
$user = new Users();
$user_data = $user->checkUser('facebook',$user_profile['id'],$user_profile['first_name'],$user_profile['last_name'],$user_profile['email'],$user_profile['gender'],$user_profile['locale'],$user_profile['picture']['data']['url']);
$_SESSION['email'] = $user_profile['email'];
header('Location:/music/profile');
}
?>
如果您仔细查看代码,我已在会话变量中添加了用户电子邮件。现在我想在我的控制器中访问此会话变量。我首先尝试两种方式:
我的控制器构造函数
function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->helper('form');
$this->load->library("session");
$this->load->model("Profile_model");
}
public function index()
{
session_start();
$name['name'] = $this->session->userdata("name");
$name['email'] = $this->session->userdata($_SESSION['email']);
$this->load->view('Profile_view', $name);
}
这给了我一个会话已经启动的错误:
忽略session_start();和未定义的索引:电子邮件
我使用的第二种方式是:
public function index()
{
session_start();
$name['name'] = $this->session->userdata("name");
$name['email'] = $_SESSION['email'];
$this->load->view('Profile_view', $name);
}
这也给我同样的错误。
答案 0 :(得分:0)
看起来电子邮件未在$ user_profile中收到,请尝试使用包含在应用开发者列表中的Facebook帐户进行测试。
答案 1 :(得分:0)
尝试从会话中获取名称和电子邮件后,您的视图会加载。尝试首先在设置会话变量的位置加载视图,然后从会话
中获取值答案 2 :(得分:0)
您只需像这样调用用户数据
即可$name['email'] = $this->session->userdata('email');
因为你已经存储了它。在facebook.php中你已经开始了一个会话,所以你想再次开始一个会话。