Codeigniter facebook логин не загружает userdata - PullRequest
0 голосов
/ 01 февраля 2019

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 входа?Пожалуйста, помогите мне.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...