Morton 30 de enero de 2013 a las 09.56
   Imprimir artículo
elWebmaster.com

C贸mo implementar Mozilla Persona en tu sitio web


mozilla-persona-wideHace unos meses, Mozilla lanz贸 su servicio llamado Mozilla Persona, que permite registrar nuestros datos en un solo lugar para que 茅ste gestione nuestros inicios de sesi贸n en los sitios que visitemos con el navegador. Mozilla Persona, a煤n en beta, puede ser implementado f谩cilmente en tu sitio, y aqu铆 te decimos todo.

Hasta que Persona no sea nativo en todos los navegadores, necesitar谩s incluir un shim que provea el API navigator.id en los mismos. La sugerencia es apuntarlo a tus propios servidores.聽Coloca el siguiente c贸digo en el fondo del聽 <body>:

  1. script type="text/javascript" src="https://login.persona.org/include.js"></script>

Luego, en navigator. id.request deber铆amos agregar esto:

  1. $("#login-btn").click(function(e) {
  2.     e.preventDefault();
  3.     navigator.id.request();
  4. });

Adem谩s, en navigator.id.logout, haremos que cuando el usuario est茅 online, pueda ver un bot贸n para cerrar sesi贸n, incorporando:

  1. $("#logout-btn").click(function(e) {
  2.     e.preventDefault();
  3.     navigator.id.logout();
  4. });

Lo siguiente es lograr que si un nuevo usuario ha cerrado tu sitio mientras confirmaba su direcci贸n de correo electr贸nico, a煤n podamos llevarlos de vuelta a tu sitio, lo que te devolver谩 un evento onlogin. Para hacer esto necesitamos de navigator.id.watch(). Nos llevar谩 un m茅todo onlogin, un聽 m茅todo onlogout, y un string a loggedInUser. Si crees que el usuario tiene la sesis贸n iniciada, deber谩s pasar el string del e-mail, y chequearlo dos veces:

  1. navigator.id.watch({
  2.     onlogin: function(assertion) {
  3.          verifyAssertion(assertion);
  4.     },
  5.     onlogout: function() {
  6.    
  7.     },
  8.     loggedInUser: undefined
  9. });

Luego de verificarlo exitosamente, puedes seguir con tu sesi贸n tradicional en tu sitio. Aseg煤rate de que en todas las otras p谩ginas se configure loggedInUser como el e-mail del usuario.

La funci贸n de verifyAssertion que se muestra en el callback onlogin que vimos anteriormente es una funci贸n que debes implementar.Con jQuery, deber铆a verse as铆:

  1. function verifyAssertion(assertion) {
  2.     $.post("/auth/verify", { assertion: assertion }, function onSuccess(resp) {
  3.          // maybe you return a json response including the email
  4.          updateUser(resp.email);
  5.     });
  6. };

En el caso del shim, una vez que est茅s seguro de que no hay bugs en el proceso de verificaci贸n, eres bienvenido a alojar un m茅todo de verificaci贸n en tu propio server.

El servicio de verificaci贸n devolver谩 una respuesta JSON v谩lida si la afirmaci贸n es v谩lida:

  1. {
  2.     "status": "okay",
  3.     "email": "foo@bar.com",
  4.     "audience": "https://yoursitehere.com",
  5.     "expires": 1308859352261,
  6.     "issuer": "bar.com"
  7. }

Aqu铆 hay un ejemplo utilizando un poco de Python y librer铆as Requests :

  1. data = {'assertion': assertion, 'audience': 'https://yoursitehere.com'}
  2. resp = requests.post('https://verifier.login.persona.org/verify', data=data, verify=True)
  3. json = resp.json()
  4. if json['status'] == 'okay':
  5.     email = json['email']
  6.     user = User.objects.get(email=email)
  7.     if not user:
  8.         user = User.objects.create(email=email)
  9.         session.userid
  10.     session.userid = user.pk
  11.     return { 'email': email }

Si la afirmaci贸n es v谩lida, iniciamos la sesi贸n del usuario como si lo hemos visto antes, o creamos un nuevo usuario si no lo hemos hecho.聽 Te puedes imaginar lo que puedes hacer si resp.json['status'] no devuelve algo positivo.

Eso es todo 隆Esperamos que te haya sido de utilidad!

Fuente original del art铆culo: David Walsh Blog
Traducci贸n realizada por
elWebmaster.com


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (2)

  1. adriano casta帽eda lara dice:

    sinceramente no entendi mozilla persona

  2. Armando dice:

    La verdad, es que se ve muy 煤til… pero creo que tal vez, deber铆an ponerse mas las pilas los de Mozilla si es que quieren que este proyecto “Mozilla Persona” triunfe!

    Bueno esa es mi humilde opini贸n!

    saludos :)

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder