Login with Google account in CodeIgniter with OpenID

前端 未结 2 993
长发绾君心
长发绾君心 2020-12-14 04:06

I want to implement a login with a Google account using OpenID, but I have no idea how to start this procedure because I have no idea about how to do it. So is there any ste

相关标签:
2条回答
  • 2020-12-14 04:44

    Download LightOpenID. Create the login.php file, and paste the following code into the file.

    <?php
    
    require_once 'openid.php';
    $openid = new LightOpenID("my-domain.com");
    
    if ($openid->mode) {
        if ($openid->mode == 'cancel') {
            echo "User has canceled authentication !";
        } elseif ($openid->validate()) {
            $data = $openid->getAttributes();
            $email = $data['contact/email'];
            $first = $data['namePerson/first'];
            echo "Identity : $openid->identity <br>";
            echo "Email : $email <br>";
            echo "First name : $first";
        } else {
            echo "The user has not logged in";
        }
    } else {
        echo "Go to index page to log in.";
    }
    

    Create the index.php file, and paste the following code into the file.

    <?php
    
    require_once 'openid.php';
    $openid = new LightOpenID("my-domain.com");
    
    $openid->identity = 'https://www.google.com/accounts/o8/id';
    $openid->required = array(
        'namePerson/first',
        'namePerson/last',
        'contact/email',
    );
    $openid->returnUrl = 'http://my-domain.com/login.php'
    ?>
    
    <a href="<?php echo $openid->authUrl() ?>">Login with Google</a>
    

    This is all you need to do. The code has been taken from Google Login with LightOpenID.

    0 讨论(0)
  • 2020-12-14 05:00

    At first download openid.php and put in your codeigniter root folder.

    1. copy the code and save as ..../controller/logingoogle.php

        <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class LoginGoogle extends CI_Controller 
    {
        public function __construct()
        {
            parent::__construct();
            $this->load->model('login_model');
        }
    
        public function index()
        {
            require_once 'openid.php';
            $openid = new LightOpenID("localhost");
            $openid->identity = 'https://www.google.com/accounts/o8/id';
            $openid->required = array(
                'namePerson/first',
                'namePerson/last',
                'contact/email',
                'birthDate', 
                'person/gender',
                'contact/postalCode/home',
                'contact/country/home',
                'pref/language',
                'pref/timezone',  
            );
    //  $openid->returnUrl = 'http://localhost/login_thirdparty/login_google.php';
    
        $openid->returnUrl = 'http://localhost/login_thirdparty/codeigniterlogin/index.php/logingoogle/loginAuth';
    
    //  echo '<a href="'.$openid->authUrl().'">Login with Google</a>';
    
            $data['openid'] = $openid;
            $this->load->view('googleLoginView', $data);
        }
    
        public function loginAuth()
        {
            $this->login_model->index();
        }
    }
    

    2. copy the code and save as ..../views/googleLoginView.php

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>Login using google account</title>
    </head>
    <body>
        <a href = "<?php echo $openid->authUrl(); ?>" > Loging Using google account </a>
    </body>
    </html>
    

    3. copy the code and save as ..../models/login_model.php

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    require 'openid.php';
    
    class Login_model extends CI_Model 
    {
        public function index()
        {
            $openid = new LightOpenID("localhost");
    
            if($openid->mode)
            {
                if($openid->mode == 'cancel')
                {
                    echo "User has canceled authentication !";
                }
                elseif($openid->validate())
                {
                    $data = $openid->getAttributes();
                    $email = $data['contact/email'];
                    $first = $data['namePerson/first'];
        //          header("Location: http://speechwithmilo.com/speechtherapy/adminpanel/");
                    echo "Identity : $openid->identity <br />";
                    echo "Email : $email <br />";
                    echo "First name : $first";
                    echo "<pre>"; print_r($data); echo "</pre>";
    
    //              echo "<meta http-equiv = 'refresh' content = '0; url=http://speechwithmilo.com/speechtherapy/adminpanel/'>";
                }
                else
                {
                    echo "The user has not logged in";
                }
            }
            else
            {
                echo "Go to the login page to logged in";
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题