Какво е XAuth?
XAuth е отворена платформа за разширена идентификация на потребители през уеб.Сайтовете, които участват в процеса генерират уникални идентификатори за всеки от участниците си. На пръв поглед това е споделена сесия между различни сайтове, ако например се идентифицирате пред bogomil.info, чрез Xauth, можете да бъдете идентифициран и на другия ми сайт talkweb.eu или в моята gmail поща, ако ви разреша.
Как работи
Основното изискване е браузъра ви да поддържа HTML5, защото се работи с обекти, които се поддържат само от тази версия. Ако използвате последна версия на браузъра си, това няма да е проблем. Ето и основните участници в процса:
– Extenders – са уеб услугите в които вече сте логнат и искат да участват в Xauth – примерно пощата ви в google или друга популярна услуга.
– Retrievers – са уеб услуги, които искат да предоставят услуги на потребители, които вече са логнати през някой от Extenders.
– XAuth.org е последната част от уравнението. Цялата комуникация на XAuth става чрез iframe и .jsh. Всички данни обаче се запазват на ВАШИЯ си КОМПЮТЪР. Никъде не се пази нищо за вас, освен при вас.
Стъпка 1: Да станем част от мрежата
Единственото, което трябва да направите е да сложите в главата на файла си следния ред и вече е готово
<script type="text/javascript" src="http://xauth.org/xauth.js"></script>
Стъпка 2: Да станем Extender
Първото което трябва да направим е да създадем token, което на български може да се нарече и знак или следа, защото то именно върши това. Ето функцията
function doLogin(doneUrl) {
XAuth.extend({
token: "1", //Тук ние решаваме какво да е - трябва да е уникално за нашия си сайт
expire: new Date().getTime() + 60*60*24*1000, // до кога е валиден
extend: ["talkweb.eu"], //разреши на скрипта да работи само с един домейн
callback: location.replace(doneUrl)
});
}
Стъпка 3:Да станем Retriever
Хайде сега да извлечем това, което създадохме в първа стъпка:
function doRetrieve() {
XAuth.retrieve({
retrieve: ["talkweb.eu"],
callback: onRetrieve
});
}
function onRetrieve(data) {
var numTokens = 0;
var str = “;
if (data && data.tokens) {
for (var token in data.tokens) {
if (numTokens > 0) str += ‘, ‘;
str += token + ‘: ‘ + data.tokens[token].token;
numTokens++;
}
}
if (str == “) {
str = ‘(none)’;
}
document.getElementById(‘login_status’).innerHTML = str;
}
Стъпа 4: Хайде да го видим в действие
Ето и примера на английския ми блог, можете да видите целия сорс код на страницата.
Тук има още малко залитания по темата.