我在php中提供服务,返回带有自定义数据(身份验证数据)的令牌:
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 :(得分:1)
令牌是一种简单的JWT格式。可以使用浏览器中的window.atob()对其进行解构。对于不支持atob / btoa方法的浏览器,您还可以grab a polyfill。以下代码来自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令牌的小提琴,为您提供一个工作示例和一个简单的测试工具:
答案 1 :(得分:0)
几个小时后,我知道答案。我将angularFire与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。
中