0

对 ember 来说非常新,但我的头仍然围绕着框架。使用 ember-cli 2.9.1。

我正在尝试使用 ember-simple-auth 及其 torii/google-oauth2 身份验证器执行身份验证。至此,除了最后一步,身份验证成功后的重定向之外,一切正常。似乎没有完整描述这部分的教程或描述。

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

此外,在弹出舞蹈期间,会出现两个弹出窗口- 第一个是包含来自 Google 的内容的窗口,第二个是在地址栏中显示我的 redirectUrl 的窗口。但是,两个窗口都很快关闭,并且重定向不会发生在我的主登录页面上。在第二个弹出窗口中提供的主登录页面中一定有一些我没有正确处理的东西。

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

配置/环境.js:

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

应用程序/组件/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();
    }
  }

});

应用程序/模板/组件/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}}
4

1 回答 1

0

这个问题原来是三方面的。

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

2) ApplicationRouteMixin 需要混合到应用程序路由中,以便 ember-simple-auth 自动执行重定向,根据API 文档

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

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

3)为了避免二次弹窗,需要去掉谷歌登录按钮;我最终删除了整个东西,只使用了来自 Google 的品牌形象 - 链接到按钮源及其相关的 JS 也对我的布局产生了问题,因此通用化最终变得更加简单;加载时间也快得多这样做

于 2016-11-23T12:43:59.163 回答