Facebook重定向登录页面,无需注册客户Opencart 2.0.3

时间:2015-09-08 17:11:27

标签: php facebook sdk facebook-opengraph facebook-login

我不知道为什么我的facebook opencart 2.0.3 moudle在我尝试时没有按摩 登录facebook按钮我成功重定向到我的网站,但没有注册用户没有任何错误。我正在使用facebook SDK v.3.2.3。

     <?php 
      class ControllerAccountadvancedlogin extends Controller {
        private $error = array();

         public function index() {

        if ($this->customer->isLogged()) {
        if ($this->config->get('advancedlogin_redirect_advurl')) {
            $this->response->redirect($this->session->data['advurl']);
            }
            else
            {
            $this->response->redirect($this->url->link('account/account', '', 'SSL'));
            }
            }



        if(!isset($this->advancedlogin)){           session_start();
            require_once(DIR_SYSTEM . 'vendor/facebook-sdk/facebook.php');

            $this->advancedlogin = new Facebook(array(
                'appId'  => $this->config->get('advancedlogin_apikey'),
                'secret' => $this->config->get('advancedlogin_apisecret'),
            ));
        }

        $_SERVER_CLEANED = $_SERVER;
        $_SERVER = $this->clean_decode($_SERVER);

        $fbuser = $this->advancedlogin->getUser();
        $fbuser_profile = null;
        if ($fbuser){
            try {
                $fbuser_profile = $this->advancedlogin->api("/$fbuser");
            } catch (FacebookApiException $e) {
                error_log($e);
                $fbuser = null;
            }
        }

        $_SERVER = $_SERVER_CLEANED;

if (!isset($fbuser_profile['verified'])){
$fbuser_profile['verified']=1;
}
        if($fbuser_profile['id'] && $fbuser_profile['email'] && $fbuser_profile['verified']){
            $this->load->model('account/customer');

            $email = $fbuser_profile['email'];
            $password = $this->get_password($fbuser_profile['id']);

            if($this->customer->login($email, $password)){
                if ($this->config->get('advancedlogin_redirect_advurl')) {
            $this->response->redirect($this->session->data['advurl']);
            }
            else
            {
            $this->response->redirect($this->url->link('account/account', '', 'SSL'));
            }

            }

            $email_query = $this->db->query("SELECT `email` FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(strtolower($email)) . "'");

            if($email_query->num_rows){
                $this->model_account_customer->editPassword($email, $password);
                if($this->customer->login($email, $password)){
                    if ($this->config->get('advancedlogin_redirect_advurl')) {
            $this->response->redirect($this->session->data['advurl']);
            }
            else
            {
            $this->response->redirect($this->url->link('account/account', '', 'SSL'));
            }

                }
            }
            else{


                $this->request->post['email'] = $email;

                $add_data=array();
                $add_data['email'] = $fbuser_profile['email'];
                $add_data['password'] = $password;
                $add_data['firstname'] = isset($fbuser_profile['first_name']) ? $fbuser_profile['first_name'] : '';
                $add_data['lastname'] = isset($fbuser_profile['last_name']) ? $fbuser_profile['last_name'] : '';


                $this->load->model('account/advancedlogin');

                $this->model_account_advancedlogin->register($add_data, 1);


                if($this->customer->login($email, $password)){
                    unset($this->session->data['guest']);
                        if ($this->config->get('advancedlogin_redirect_advurl')) {
            $this->response->redirect($this->session->data['advurl']);
            }
            else
            {
            $this->response->redirect($this->url->link('account/success', '', 'SSL'));
            }
                }
            }

        }

        $this->response->redirect($this->url->link('account/account', '', 'SSL'));


    }

    private function get_password($str) {
        $password = $this->config->get('advancedlogin_pwdsecret') ? $this->config->get('advancedlogin_pwdsecret') : 'fb';
        $password.=substr($this->config->get('advancedlogin_apisecret'),0,3).substr($str,0,3).substr($this->config->get('advancedlogin_apisecret'),-3).substr($str,-3);
        return strtolower($password);
    }

    private function clean_decode($data) {
            if (is_array($data)) {
            foreach ($data as $key => $value) {
                unset($data[$key]);
                $data[$this->clean_decode($key)] = $this->clean_decode($value);
            }
        } else { 
            $data = htmlspecialchars_decode($data, ENT_COMPAT);
        }

        return $data;
    }     
}
?>

0 个答案:

没有答案