2016-11-17 54 views
0

对于余烬来说,这是非常新颖的东西,并且仍然围绕着框架环绕着我的头。使用ember-cli 2.9.1。用torii和google-oauth2使用ember-simple-auth重定向步骤不会触发

我正在尝试使用ember-simple-auth及其torii/google-oauth2身份验证器执行身份验证。在这一点上,除了最后一步,认证成功后的重定向之外,一切都可以工作。似乎没有任何教程或描述可以完整描述这部分内容。

我看到身份验证执行成功,我收到一个身份验证代码并将其存储在本地存储中。它持续在刷新和所有这一切。但是,弹出式窗口舞蹈发生后,重定向从不会发生。我仍然坐在登录页面,当我应该被带到我注册了我的应用程序和Google的redirectUri。

此外,在弹出跳舞期间,出现两个弹出窗口 - 第一个是带有Google内容的窗口,第二个是在地址栏中显示我的redirectUrl的窗口。但是,两个窗口都很快关闭,重定向不会发生在我的主登录页面上。在第二个弹出窗口中提供的主要登录页面中,必须有一些内容无法正确处理。

下面是相关的代码。非常感谢您的帮助!

配置/ environment.js:

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

应用/组件/谷歌登入-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(); 
    } 
    } 

}); 

应用程序/模板/组件/谷歌登入-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

问题原来是三重的。

1)的动作需要被移出到路由器

2)ApplicationRouteMixin需要该应用程序路由到被混合,以便余烬-简单-AUTH自动执行重定向,每the API documentation

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

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

3)需要删除Google登录按钮以避免第二次弹出;我最终删除了整个事情,只是使用了谷歌的一个品牌形象 - 链接到按钮源及其关联的JS创建的问题与我的布局,以便通用最终变得更简单;加载时间也快很多,这样做