2013-12-04 2 views
2

У меня есть службы в PHP, возвращающих маркер с пользовательскими данными (данные аутентификации):Angularfire, firebase JSON Web Tokens - как получить доступ к данным аутентификации из токена?

include_once "FirebaseToken.php"; 
    $secret = "***********"; 
    $tokenGen = new Services_FirebaseTokenGenerator($secret); 
    $token = $tokenGen->createToken(array("name" => "ADMIN"),array(admin => true)); 
    echo $token; 

Тогда в угловой у меня есть функция для входа в систему:

adminlogin: function(){ 
    var token; 
    $http.get("http://****").success(function(data){token=data;}) 
    .then(function(){ 
     var dataRef = new Firebase(FBURL); 
     dataRef.auth(token, function(error) { 
      if(error) { 
      console.log("Login Failed!", error); 
      } else { 
      console.log("DISPLAY name FROM TOKEN"); 
      } 
     }); 
     }) 

И после аутентификации я хочу показать название маркер. Как получить доступ к данным аутентификации из токена?

ответ

0

Через несколько часов я знаю ответ. Я смешал угловой огонь с Firebase.

Это должно быть так:

adminlogin: function(){ 
var token; var dataRef; 
     $http.get("http://localhost/rubinki/php/").success(function(data){token=data;}) 
     .then(function(){ 
     angularFireAuth.login(token); 
     }) 
    } 

, а затем, если у вас есть правильно инициализирован метод angularFireAuth, например:

angularFireAuth.initialize(new Firebase(FBURL), {scope: $rootScope, name: 'auth'); 

Вы можете получить доступ к данным аутентификации с точки зрения, как это:

{{auth.d.email}} 

Все данные с токена указаны в auth.d.

+0

Для получения более подробной информации смотрите метод Войти в http://angularfire.com/source.html –

1

Токен представляет собой простой формат JWT. Он может быть деконструирован с помощью window.atob() в вашем браузере. Вы также можете использовать grab a polyfill для браузеров, которые не поддерживают методы atob/btoa. Код ниже от this gist.

// Helper function to extract claims from a JWT. Does *not* verify the 
// validity of the token. 
// credits: https://github.com/firebase/angularFire/blob/master/angularFire.js#L370 
function deconstructJWT(token) { 
    var segments = token.split("."); 
    if (!segments instanceof Array || segments.length !== 3) { 
     throw new Error("Invalid JWT"); 
    } 
    var claims = segments[1]; 
    return JSON.parse(decodeURIComponent(escape(window.atob(claims)))); 
} 

А вот скрипка, который строит и разбирает Firebase маркеров, используя этот подход, чтобы дать вам рабочий пример и простой инструмент для тестирования:

http://jsfiddle.net/katowulf/D4YL8/embedded/result/

+0

Прошу прощения, я должен уточнить. Я хочу прочитать данные, отправленные в токен, но после проверки с помощью firebase. Данные должны быть доверенными. Я уже нашел решение. –

+0

Ваше решение немного обходное, используя угловой интерфейс для анализа маркера для вас. Внутри, angularFire использует тот же код, что и пример выше (который фактически берется из внутренних элементов angularFire). – Kato

Смежные вопросы