2016-11-17 2 views
0

Sehr neu zu ember und immer noch meinen Kopf um das Framework. Verwenden von ember-cli 2.9.1.Redirect Schritt nicht feuern mit Ember-Simple-Auth mit Torii und Google-Oauth2

Ich versuche, Authentifizierung mit Ember-Simple-Auth und seine Torii/Google-Oauth2-Authentifikator durchzuführen. An diesem Punkt funktioniert alles außer dem letzten Schritt, der Weiterleitung nach der Authentifizierung. Scheint so, als ob es keine Tutorials oder Beschreibungen gibt, die diesen Teil vollständig beschreiben.

Ich sehe, dass die Authentifizierung erfolgreich durchgeführt wird, erhalte ich einen Authentifizierungscode und es wird im lokalen Speicher gespeichert. Es bleibt überfrischt und all das. Nach dem Popup-Fenster-Tanz tritt die Umleitung jedoch nie auf. Ich bleibe immer noch sitzen auf der Login-Seite, wenn ich zu den redirectUri, die ich registriert mit meiner App und mit Google gebracht werden sollte.

Zusätzlich erscheinen während des Popup-Tanzes zwei Popup-Fenster - das erste ist dasjenige mit Inhalt von Google, das zweite ist dasjenige, das mein redirectUrl in der Adressleiste anzeigt. Beide Fenster schließen jedoch schnell und die Umleitung geschieht nicht auf meiner Hauptanmeldeseite. Auf meiner Hauptanmeldeseite, die in diesem zweiten Popup angezeigt wird, muss etwas sein, das ich nicht richtig handhabe.

Hier ist der relevante Code. Vielen Dank für deine Hilfe!

config/environment.js:

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

app/Komponenten/Google-signin-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/templates/Komponenten/Google-signin-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}} 

Antwort

0

Das Problem erweist sich als dreifach.

1) müssen die Aktionen in den Router

2) ausgezogen werden, die ApplicationRouteMixin muss in der Anwendung Route für Ember-simple-auth um gemischt werden, um die Umleitung automatisch durchzuführen, je the API documentation:

3) Der Google-Anmeldebutton muss entfernt werden, um das zweite Popup zu vermeiden; Am Ende habe ich das ganze Ding entfernt und nur ein Branding-Bild von Google verwendet - die Verknüpfung mit der Button-Quelle und dem damit verbundenen JS erzeugte Probleme mit meinem Layout, so dass das Generieren einfacher wurde; Ladezeit ist auch viel schneller dabei

Verwandte Themen