2010-12-16 9 views
7

Quiero intentar usar el ID abierto como sistema de inicio de sesión en el sitio que voy a crear. He echado un vistazo a este sitio, y no estoy muy seguro de cómo funciona todo esto y cómo hacerlo funcionar. http://remysharp.com/2007/12/21/how-to-integrate-openid-as-your-login-system/Cómo usar el ID abierto como sistema de inicio de sesión

Lo que está claro ahora es que la identificación abierta usa urls en lugar de contraseñas. ¿Puede darme algunos enlaces para ayudarme a comenzar con esto, ? Necesito saber php avanzado para que esto funcione para mí. Solo conozco los conceptos básicos de php.

+0

Nuestro propio StackOverflow utiliza OpenID. Además, existen bibliotecas OID para la mayoría de los lenguajes y marcos. Pero es bastante sencillo. Para registrar a alguien con su OpenID, puede redirigir a un sitio especificado por el OID y si ese sitio puede verificar la identidad del usuario, le dará un secreto para usar. Ese secreto funciona como la contraseña del nombre de usuario que es el OID. Por lo tanto, es igual de seguro, o más, pero transfiere la autenticación del usuario al sitio emisor. – Robert

+0

posible duplicado de http://stackoverflow.com/questions/42407/how-do-i-implement-openid-in-my-web-application –

Respuesta

3

Puede utilizar la librería PHP OpenID here o para PHP 4 here

+1

lightopenid es mucho más simple y más rápido para comenzar con –

10

Gracias a algún otro comentario sobre Stackoverflow.com Yo he venido a aprender sobre LightOpenId. Es realmente fácil de usar.

El código example simplemente funciona (sin ningún tipo de configuración):

<?php 
require 'openid.php'; 
try { 
    $openid = new LightOpenID; 
    if(!$openid->mode) { 
     if(isset($_POST['openid_identifier'])) { 
      $openid->identity = $_POST['openid_identifier']; 
      header('Location: ' . $openid->authUrl()); 
     } 
?> 
<form action="" method="post"> 
    OpenID: <input type="text" name="openid_identifier" /> <button>Submit</button> 
</form> 
<?php 
    } elseif($openid->mode == 'cancel') { 
     echo 'User has canceled authentication!'; 
    } else { 
     echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.'; 
    } 
} catch(ErrorException $e) { 
    echo $e->getMessage(); 
} 

Usando google as openid provider.

<?php 
# Logging in with Google accounts requires setting special identity, so this example shows how to do it. 
require 'openid.php'; 
try { 
    $openid = new LightOpenID; 
    if(!$openid->mode) { 
     if(isset($_GET['login'])) { 
      $openid->identity = 'https://www.google.com/accounts/o8/id'; 
      header('Location: ' . $openid->authUrl()); 
     } 
?> 
<form action="?login" method="post"> 
    <button>Login with Google</button> 
</form> 
<?php 
    } elseif($openid->mode == 'cancel') { 
     echo 'User has canceled authentication!'; 
    } else { 
     echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.'; 
    } 
} catch(ErrorException $e) { 
    echo $e->getMessage(); 
} 
+0

el botón no hace nada:) Debería ser una entrada con type = "submit" :) pero de nuevo no tengo más que un solo botón en un formulario, así que tal vez estoy equivocado, si estoy por favor corrígeme, no veo cómo eso podría estar mal, aunque .. –

+0

Esto simplemente funciona. Se ha copiado de los ejemplos => http://gitorious.org/lightopenid/lightopenid/blobs/master/example-google.php para un acceso más rápido. – Alfred

Cuestiones relacionadas