2016-11-17 5 views
0

非常に新しく、フレームワークの周りに私の頭を包んでいる。 ember-cliの使用2.9.1。リダイレクトステップは、鳥居とgoogle-oauth2でember-simple-authを使用して起動しません。

ember-simple-authとそのtorii/google-oauth2認証ツールを使用して認証を実行しようとしています。この時点で、最終ステップ以外はすべて動作し、認証が成功した後のリダイレクトが実行されます。この部分を完全に記述するチュートリアルや説明はないようです。

認証が正常に実行されたことが確認され、認証コードが返され、ローカルストレージに格納されます。それはリフレッシュとそのすべてにわたって持続する。ただし、ポップアップウィンドウのダンスが発生した後は、リダイレクトは発生しません。私はログインページに座ったままで、自分のアプリケーションとGoogleの両方に登録したredirectUriに移動する必要があります。

はさらに、ポップアップダンス中に、2ポップアップウィンドウが表示され - 最初は、Googleからのコンテンツとの1である第2には、アドレスバーに自分のredirectUrlを示すものであること。しかし、両方のウィンドウはすばやく閉じ、メインのログインページではリダイレクトは発生しません。 2番目のポップアップで提供されているメインのログインページで正しく処理されていないものがなければなりません。

ここに関連コードがあります。ご協力いただき誠にありがとうございます!

設定/ environment.js:

// config/environment.js 
var ENV = { 
... 
    torii: { 
     providers: { 
     'google-oauth2': { 
      apiKey: '189573826905-p886jmjpam371fjoitktoec8hretkoo8.apps.googleusercontent.com', 
      redirectUri: 'https://localhost:4200/app/search', 
     } 
     } 
    }, 
... 
}; 

APP /コンポーネント/ Googleがサインイン-button.js

// app/components/google-signin-button.js 
import Ember from 'ember'; 

export default Ember.Component.extend({ 
    session: Ember.inject.service(), 

    didInsertElement() { 
    Ember.$.getScript('https://apis.google.com/js/platform.js'); 
    }, 

    actions: { 
    authenticate_google() { 
     this.get('session').authenticate('authenticator:torii', 'google-oauth2'); 
    }, 
    invalidateSession() { 
     this.get('session').invalidate(); 
    } 
    } 

}); 

APP /テンプレート/構成要素/ Googleがサインイン-button.hbs

// app/templates/components/google-signin-button.hbs 
<meta name="google-signin-client_id" content="755937126905-p886jmjpam371fjoitktoec8hretkoo8.apps.googleusercontent.com"> 

<div {{action 'authenticate_google'}}> 
    <h2 id="title">google oauth2 test</h2> 
    <div google-signin-button class="g-signin2"/> 
</div> 

{{#if session.isAuthenticated}} 
    <a {{action 'invalidateSession'}}>Logout</a> 
{{else}} 
    {{#link-to 'login'}}Login{{/link-to}} 
{{/if}} 


{{yield}} 

答えて

0

この問題は3倍になります。

1)アクションがルータ

2)ApplicationRouteMixinはthe API documentation当たり、自動的リダイレクトを実行するためのエンバー-簡単-AUTHために、アプリケーション・ルートに混合する必要があるに出て移動する必要があります。

// app/routes/application.js 
import Ember from 'ember'; 

export default Ember.Component.extend(ApplicationRouteMixin, { 
    session: Ember.inject.service(), 
... 

3)2番目のポップアップを回避するには、Googleのサインインボタンを削除する必要があります。私は全体を削除し、ちょうどGoogleからのブランディングイメージを使用しました - ボタンソースとそれに関連付けられたJSが私のレイアウトで問題を作成したので、ジェネリックスはずっと簡単になりました。読み込み時間もこれよりずっと速くなります。

関連する問題