3

カスタムデータ(認証データ)でトークンを返すPHPのサービスがあります:

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

次に、Angularにはログイン用の機能があります:

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");
          }
        });
      })

認証後、トークンから名前を表示したい。token から認証データにアクセスするには?

4

2 に答える 2

1

トークンは単純な JWT 形式です。ブラウザで window.atob() を使用して分解できます。atob/btoa メソッドをサポートしていないブラウザ用のポリフィルを取得することもできます。以下のコードは、この要点からのものです。

// 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/

于 2013-12-04T17:02:07.213 に答える
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 にあります。

于 2013-12-04T13:36:11.190 に答える