2013-02-20 4 views
10

OpenID를 사용하여 Google 계정으로 로그인을 구현하고 싶지만 어떻게해야할지 모르기 때문에이 절차를 시작하는 방법을 모릅니다. 거기에 단계별 가이드가 있으므로 PHP에서 CodeIgniter를 사용하여 Google 계정 로그인을 쉽게 구현할 수 있습니다.OpenID를 사용하여 CodeIgniter에서 Google 계정으로 로그인

나는 단지 this 만 찾았지만 제대로 이해할 수 없으므로 Google 계정으로 로그인 할 수있는 가이드 나 라이브러리가 있습니까?

+1

Google은 2015 년 4 월부터 OpenID를 사용하여 로그인을 퇴사 시켰지만 완전히 다른 후속 버전 인 OpenID Connect를 사용하여 로그인을 해제했습니다. https://developers.google.com/identity/protocols/OpenID2Migration –

답변

6

다운로드 LightOpenID. 다음 코드를 login.php를 만들고 붙여

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

이이 작업이 완료 모든입니다 다음 코드

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

index.php 페이지를 만들고 붙여 넣습니다. 코드 가져 오기 Google Login with LightOpenID

+0

감사하지만 전자 메일 및 사용자 이름과 같은 데이터를 가져 오지만 항상 전자 메일 및 언어 만받는 것은 아닙니다. 모든 매개 변수는 openid.php 파일에서 정의하지만 다른 매개 변수는 얻지 못합니다. –

+0

다운로드 로그인 openid가 작동하지 않습니다. 다른 URL을 줄 수 있습니까? –

2

먼저 openid.php을 다운로드하고 codeigniter 루트 폴더에 넣습니다.

1 카피 코드로 저장하고 ..../제어기/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 복사 코드 .... /보기/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. 복사 코드와 다른 이름으로 저장 .../모델/login_model.php

+0

해결책을 사용했지만 오류가 발생했습니다. 제 질문을 여기서보십시오. http://stackoverflow.com/questions/22173781/login-through-google-in-codeigniter-via-openid –

관련 문제