config / facebook.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| Facebook API Configuration
| -------------------------------------------------------------------
|
| To get an facebook app details you have to create a Facebook app
| at Facebook developers panel (https://developers.facebook.com)
|
| facebook_app_id string Your Facebook App ID.
| facebook_app_secret string Your Facebook App Secret.
| facebook_login_type string Set login type. (web, js, canvas)
| facebook_login_redirect_url string URL to redirect back to after login. (do not include base URL)
| facebook_logout_redirect_url string URL to redirect back to after logout. (do not include base URL)
| facebook_permissions array Your required permissions.
| facebook_graph_version string Specify Facebook Graph version. Eg v2.10
| facebook_auth_on_load boolean Set to TRUE to check for valid access token on every page load.
*/
$config['facebook_app_id'] = '***********************';
$config['facebook_app_secret'] = '***********************************';
$config['facebook_login_type'] = 'web';
$config['facebook_login_redirect_url'] = 'login';
$config['facebook_logout_redirect_url'] = 'logout';
$config['facebook_permissions'] = array('email');
$config['facebook_graph_version'] = 'v2.10';
$config['facebook_auth_on_load'] = TRUE;
Контроллер:
public function login()
{
$userData = array();
if($this->facebook->is_authenticated()){
$fbUserProfile = $this->facebook->request('get', '/me?fields=id,first_name,last_name,email');
$userData['oauth_provider'] = 'facebook';
$userData['oauth_uid'] = $fbUserProfile['id'];
$userData['name'] = $fbUserProfile['first_name']." ".$fbUserProfile['last_name'];
$userData['email'] = $fbUserProfile['email'];
$userID = $this->user->checkUser($userData);
if(!empty($userID))
{
$data['userData'] = $userData;
$this->session->set_userdata('userData',$userData);
}
else
{
$data['userData'] = array();
}
$data['logoutURL'] = $this->facebook->logout_url();
}
else
{
$data['authURL'] = $this->facebook->login_url();
}
$this->load->view('login',$data);
}
Просмотр: login.php
<?php
if(!empty($authURL))
{
echo '<a href="'.$authURL.'"><i class="fa fa-facebook"></i> Sign in with facebook</a>';
}
else
{
?>
<p><b>Name : </b><?php echo $userData['first_name'].' '.$userData['last_name']; ?></p>
<p><b>Logout from <a href="<?php echo $logoutURL; ?>">Facebook</a></b></p>
<?php
}
?>
Model / User.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User extends CI_Model{
function __construct() {
$this->tableName = 'user';
$this->primaryKey = 'id';
}
public function checkUser($userData = array())
{
if(!empty($userData))
{
$this->db->select($this->primaryKey);
$this->db->from($this->tableName);
$this->db->where(array('oauth_provider'=>$userData['oauth_provider'],'oauth_uid'=>$userData['oauth_uid']));
$prevQuery = $this->db->get();
$prevCheck = $prevQuery->num_rows();
if($prevCheck > 0)
{
$prevResult = $prevQuery->row_array();
$userData['modified'] = date("Y-m-d H:i:s");
$update = $this->db->update($this->tableName,$userData,array('id'=>$prevResult['id']));
$userID = $prevResult['id'];
}
else
{
$userData['user_id'] = date("YmdHis");
$userData['created'] = date("Y-m-d H:i:s");
$userData['modified'] = date("Y-m-d H:i:s");
$insert = $this->db->insert($this->tableName,$userData);
$userID = $this->db->insert_id();
}
}
return $userID?$userID:FALSE;
}
}
Я просто объединяю вход на Facebook с codeigniter.Где, когда я нажимаю на ссылку Facebook, как я показываю в моем файле просмотра, она переходит на страницу входа в Facebook после входа в Facebook, она перенаправляет меня на страницу login.php
, где я показываю firstname
, но ничего не показывает после успешного входа в систему, показывая тот же Facebookссылка на сайт.Итак, как я могу получить пользовательские данные через Facebook входа?Пожалуйста, помогите мне.
Спасибо