2013-02-20 5 views
10

Ich möchte eine Anmeldung mit einem Google-Konto mit OpenID implementieren, aber ich habe keine Ahnung, wie ich dieses Verfahren starten, weil ich keine Ahnung habe, wie es geht. Also gibt es Schritt-für-Schritt-Anleitungen dafür, damit ich einfach einen Google-Account-Login mit CodeIgniter in PHP implementieren kann.Login mit Google-Konto in CodeIgniter mit OpenID

Ich habe nur this gefunden, aber ich kann es nicht richtig verstehen, also gibt es irgendwelche Anleitungen oder Bibliotheken, um sich mit einem Google-Konto anzumelden?

+1

Beachten Sie, dass Google seit April 2015 die Anmeldung mit OpenID zugunsten der Anmeldung mit OpenID Connect außer Betrieb genommen hat, ein ganz anderer Nachfolger, siehe auch: https://developers.google.com/identity/protocols/OpenID2Migration –

Antwort

6

Download LightOpenID. Erstellen login.php und fügen Sie den folgenden Code

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

erstellen index.php Seite und fügen Sie den folgenden Code

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

Dies ist Alles, was Sie fertig sind. Code genommen von Google Login with LightOpenID

+0

Danke, aber ich Erhalten Sie Daten wie E-Mail und Benutzername, aber nicht jedes Mal nur E-Mail und Sprache Ich benutze alle Parameter wie in openid.php Datei definieren, aber keinen anderen Parameter –

+0

Download Login Openid funktioniert nicht. Können Sie eine andere URL angeben? –

2

Zuerst laden Sie openid.php und setzen Sie in Ihren codeigniter Wurzelordner.

1. Kopieren Sie den Code und speichern als ..../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. Kopieren Sie den Code und speichern als ..../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. kopieren Sie den Code und speichern als ..../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

Ich habe Ihre Lösung verwendet, aber es ist ein Fehler aufgetreten. Bitte werfen Sie einen Blick auf meine Frage hier. http://stackoverflow.com/questions/22173781/login-through-google-in-codeigniter-via-openid –