2013-02-20 35 views
10

Tôi muốn đăng nhập bằng tài khoản Google bằng OpenID, nhưng tôi không biết cách bắt đầu quy trình này vì tôi không biết cách thực hiện. Vì vậy, có bất kỳ hướng dẫn từng bước cho điều này để tôi có thể dễ dàng thực hiện đăng nhập tài khoản Google với CodeIgniter bằng PHP.Đăng nhập bằng tài khoản Google trong CodeIgniter với OpenID

Tôi chỉ tìm thấy this nhưng tôi không thể hiểu chính xác để có bất kỳ hướng dẫn hoặc thư viện nào để đăng nhập bằng tài khoản Google không?

+1

Xin lưu ý rằng kể từ tháng 4 năm 2015, Google đã đăng nhập ngừng hoạt động với OpenID có lợi cho việc đăng nhập bằng OpenID Connect, một người kế nhiệm khá khác, xem thêm: https://developers.google.com/identity/protocols/OpenID2Migration –

Trả lời

6

Tải xuống LightOpenID. Tạo login.php và dán đoạn mã sau

<?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."; 
} 

Tạo index.php trang và dán đoạn mã sau

<?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> 

Đây là Tất cả các bạn đã làm xong. Mã được lấy từ Google Login with LightOpenID

+0

Cảm ơn nhưng tôi nhận dữ liệu như email và tên người dùng nhưng không nhận được mọi thời gian chỉ email và ngôn ngữ tôi sử dụng tất cả tham số như xác định trong tệp openid.php nhưng không nhận được bất kỳ thông số nào khác –

+0

Tải xuống đăng nhập openid không hoạt động. Bạn có thể cung cấp bất kỳ URL nào khác không. –

2

Lúc đầu tải xuống openid.php và đặt vào thư mục gốc của trình mã hóa của bạn.

1. bản sao mã và 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. Bản sao mã và 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. bản sao mã và save as ..../mô hình/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

Tôi đã sử dụng giải pháp của bạn nhưng gặp lỗi. Xin hãy xem câu hỏi của tôi ở đây. http://stackoverflow.com/questions/22173781/login-through-google-in-codeigniter-via-openid –

Các vấn đề liên quan