Skryptozakładka do logowania via Google OpenID

13 lipca 2009, 11:47:19

Jak wiadomo, implemetacja OpenID google nie jest najłatwiejsza w użyciu. Google używa tzw. "Directed Identity" z OpenID 2.0 - do logowania używany jest ten sam dla wszystkich url, właściwy identyfikator OpenID użytkownika ustalany jest po uwierzytelnieniu u dostawcy OpenID. Identyfikator OpenID dla google to https://www.google.com/accounts/o8/id - jak widać średnio wygodny do zapamiętania i wpisywania. I właśnie dlatego powstała niniejsza skryptozakładka - szuka na stronie formularza logowania, ustawia identyfikator OpenID i wysyła formularz. Oczywiście można użyć dla dowolnego innego dostawcy OpenID, zmieniając URL.

Tutaj gotowa skryptozakładka: Google OpenID

A tak wygląda w bardziej strawnej postaci:

 
(function() {
  var inputs=document.getElementsByTagName('input');
  for(i=0;i<inputs.length;i++){
    if(inputs[i].type=="text" && inputs[i].name.indexOf('openid')>=0) {
      var f = inputs[i];
      f.value = 'https://www.google.com/accounts/o8/id';
      while(f && f.tagName!='FORM') f=f.parentNode;
      if(f) f.submit();
      return;
    }
  }
  alert('Brak formularza OpenID');
})();
 

Skryptozakładka sprawdzona w FF3.5 i Chromium.

Tagi: google openid skryptozakładka bookmarklet

Avatary na joggerze za pomocą mikroformatu hCard

24 kwietnia 2009, 13:37:55

Co to jest hCard? Jest to jeden z mikroformatów służący do publikowania informacji osobistych (wizytówki), między innymi fotografii (avatara) użytkownika. Mikroformat ten definiuje po prostu sposób zapisu informacji z popularnego standardu vCard za pomocą tagów HTML.

Listę site'ów które używają różnych mikroformatów można zobaczyć tutaj - znajdziemy tam takich potentatów jak digg, google, flickr, linkedin czy twitter.

Zgodną ze standardem wizytówkę można przygotować za pomocą generatora , minimalna, zawierająca tylko avatar wygląda tak:

 
<div class="vcard">
  <img src="url_avatara" class="photo" />
</div>
 

Klasę "vcard" można odpowiednio udekorować za pomocą CSS, np. ukryć, jeżeli nie chcemy zdjęcia widocznego na stronie.

Na GAE powiesiłem małą usługę która szuka na podanej stronie pierwszej wizytówki w formacie hCard i przekierowuje do wyspecyfikowanego tam avatara, w przypadku braku do obrazka domyślnego. (keszując oczywiście dane, na razie tylko w memcache)

Potem wystarczy tylko odpowiednio udekorować komentarze pod wpisem, przykład w jQuery:

 
$(document).ready(function() {
  $('.commentlist li').each(function(k,v){
    url = $('cite a',v).attr('href') || 'anonim';
    $(v).prepend('<img src="http://its.sed.pl/avatar/'+url+'/" />')
  })
})
 

Zalety takiego rozwiązania? Zgodność z popularnym standardem, jest szansa, że tak przygotowaną wizytówkę będą w stanie automatycznie wykryć inne serwisy.

TODO:

  • Przeskalowywanie obrazków po stronie serwera, generowanie kilku rozmiarów miniatur

Tagi: avatargaehcardmicroformats

Zabawy blip api

14 kwietnia 2009, 19:52:28

Tutaj lekko zmodyfikowany Blip_er muzzy'iego - za pomocą kilku regexp'ów wstawiam linki do użytkowników, tagów, statusów i shortlinków. Aha, wymagane jQuery zamiast prototype. Demo po prawej.

Tagi: blip js api

Serwer OpenID dla Google Apps for Your Domain

29 marca 2009, 17:39:47

Od jakiegoś czasu chodziło mi po głowie, żeby dodać sobie do Google Apps własny serwer OpenID - korzystając oczywiście z dobrodziejstw Google AppEngine. Podstawowa zaleta w stosunku do serwera zewnętrznego - jedno hasło do pamiętania mniej, uwierzytelniamy się bowiem za pomocą naszego konta w Google Apps.

Okazało się, że sprawa jest prostsza niż na początku się wydawało - w przykładowym kodzie źródłowym do appengine są źródła providera openid, które praktycznie bez zmian można uruchomić na appengine (pamiętając tylko o ustawieniu uwierzytelniania tylko dla swojej domeny). Niestety - kod ten jest od prawie roku nie rozwijany i użyta tam biblioteka openid jest delikatnie mówiąc archaiczna (obsługa tylko openid 1.0).

Wziąłem się więc do roboty i po dwóch dniach poznawania python-openid, kodowania i debugowania udało się uruchomić provider'a na ostatniej wersji python-openid (2.1.1)

Funkcjonalność na razie jest tylko podstawowa - można się logować :) W podstawowy sposób obsługiwane jest także rozszerzenie Simple Registration - pola nickname i email

Źródła do pobrania na stronie projektu.

Tutaj natomiast gotowa do testowania aplikacja id-provider, z uwierzytelnianiem ustawionym dla wszystkich kont google.

Zapraszam do testowania i zgłaszania uwag / błędów i patchy.

W planach dorobienie funkcjonalności typowej dla dostawców openid - edycja profilu użytkownika (danych przesyłanych podczas Simple Registration), pamiętanie po stonie serwera decyzji w sprawie automatycznego logowania (na razie używane są ciasteczka), itd.

Tagi: appengineappsgoogleopenidpython