2016-06-01 3 views
0

シナリオ:Googleの認証を使用するAngularJSアプリがあります。ポップアップからAngularJSイベントを放出するにはどうすればいいですか?

Angular calls(my)バックエンドの場合、リソースに応じて、Oauthトークンを要求する応答を返すことができます。 この場合、AngularはそのリダイレクトURLにポップアップ(ブートストラップのモーダルダイアログではありません)を表示します。

Googleが認証し、許可を求め、ユーザーを私に返送します。 'コード'を処理して実際のトークンを取得するコールバックURLがあります。このコールバックURLはそのポップアップの内側で呼び出されます。

私はトークンを取得すると、ポップアップが自分自身を閉じて、再びその最後の要求をしようとする角度通知

問題(今私は、ユーザーのセッション中にトークンを持っている)必要があります。どのようにポップアップが角度を発することができますイベント?

実際には、$rootScope.$emitである必要はありませんが、Angularに通知する方法です。

私はthis optionを見ましたが、角度のために良いようではありません:(

答えて

0

あなたがのlocalStorageイベントを使用することができ、このデモを見てみましょう:最初のサービスを作成しますhttp://html5demos.com/storage-events

// this should be in the main page 
$window.addEventListener('storage', function(event) { 
    if(event.key === 'login-notification') { 
    // got it! 
    // you can get the value from 
    // the notification with "event.newValue" 
    } 
}, false); 

// send the event with just a setItem from the popup 
$window.localStorage.setItem('login-notification', 'ayy'); 
0

app.service("servicee", function(){ 
    return { 
    set : function(k,v){ 
      this[k] = v;  
    }, 
    get : function (k){ 
     return this[k] 
    } 
    } 
}); 

これで、サービスのトークンを設定できるようになりました。これで、アプリから利用可能な値が得られました。また、servで特定のキーを見ることもできます値を設定すると何らかのアクションを起こします。

+0

本当ですか? Angularサービスは、2つのブラウザウィンドウ間で*シングルトン*を継続しますか? – Falci

+0

ああ、質問間違いではないウィンドウ間のシングルトンでなければならない。[ng-storage](https://github.com/gsklee/ngStorage)モジュールを使用し、 'set'メソッドを使ってそれを記憶装置に保存し、それを取得するための「取得」メソッド –

関連する問題