我正在尝试创建facebook登录,
我网站上的登录按钮将我重定向到Facebook,进行登录,要求允许我的申请获得所需的许可('offline_access,email etc') .
当用户允许它返回我的内页(用户页面) . 如果用户的facebook id不在我的数据库中,也将用户数据添加到我的数据库 .
但它每次都不起作用(在两种情况下,如果数据库中的用户与否) . 有时会出现以下错误:
A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: core/Loader.php
Line Number: 346
这是我的登录功能,它生成fb登录URL
$this->load->library('facebook');
$user = $this->facebook->getUser();
$data['loginUrl']="";
$data['logoutUrl']="";
if ($user) {
try {
$data['user_profile'] = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$data['logoutUrl'] = $this->facebook->getLogoutUrl(array(
'next' => ASITEURL . '/login/logout'));
} else {
$param['redirect_uri'] = ASITEURL . '/login/checkLogInfo';
$param['scope'] = 'email,publish_stream,user_birthday';
$data['loginUrl'] = $this->facebook->getLoginUrl($param);
}
$this->load->view('login/login', $data);
checkLogInfo是处理会话和数据库代码的函数 .
Fb成功登录后重定向到以下网址(并首次授予权限):
http://mysite.com/login/checkLogInfo?state=4d59a4fe681ae940f036393c895d1c57&code=AQA3gAnl86izonBQyh8wThjNZuNowX1h6YBlGkeIiaQU__DFHDywC9nIgWYzW22EaxkVJB5nudjnNd4uElNs1-SFa0Ej_h4_4AAaYh4bLf9_HBpUiaSzbuDUcYg0WIIg0B4mvKq0_H3W3xH0gcKPWL1Fbrp3ff3IVt0unFIIeyevRb9oZwPld6NTKtU_tHxrQFtEdMgE6S2dwPcrbyY54g82#_=_
数据库设置:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$active_group = 'default';
$active_record = TRUE;
$db['default']['database'] = 'mydb';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
谢谢
1 回答
我想出了application.database设置的动态加载依赖于URL(如果URL包含'QA',则更改主机名) . 因此,每当facebook将我重定向到包含 QA 的url(作为相关的给定网址)时,它就会向我显示错误...
感谢itachi和Rick Calder .