polymerfire-auth error" auth / popup-by-user" 404弹出式重定向

时间:2017-01-07 23:59:12

标签: firebase firebase-authentication polymer-1.0 polymerfire

我创建了一个基于Polymer Starter Kit的Firebase项目,并对修复路由进行了一些修改,但是登录弹出窗口立即关闭并记录错误:

  

在完成操作之前,用户已关闭弹出窗口。

enter image description here

调用_authenticate函数(在下面的代码中)来验证用户身份。我能够在Facebook和Google控制台上正确设置它,所以我不确定错误的含义。

这是我的代码:



<dom-module id="my-app">
  <template>
    
    !-- Firebase Setup -->
    <firebase-app auth-domain="foodhop-manage.firebaseapp.com"
                  database-url="https://foodhop-manage.firebaseio.com"
                  api-key="AIzaSyA-1TEbd1EhlkPwjGBLNS74h3c5FNCHNo0"></firebase-app>

    <!-- Firebase Authentication -->
    <firebase-auth id="auth"
                    user="{{user}}"
                    signed-in="{{signedIn}}"
                    on-error="handleError"></firebase-auth>

    <!-- App Routing -->
    <app-location route="{{route}}"></app-location>
    <app-route
        route="{{route}}"
        pattern="/:page"
        data="{{routeData}}"
        tail="{{subroute}}"></app-route>

    <!-- Scroll Position Control -->
    <app-scrollpos-control id="scrollpos" selected="[[page]]" reset></app-scrollpos-control>

    <!-- Application -->
    <app-header-layout>
      <app-header condenses reveals shadow>
        <app-toolbar>
          <div main-title style="text-align:center;font-size:40px;padding-top:20px" class="font-beautify">FoodHop</div>
        </app-toolbar>
        <app-toolbar sticky>
          <div class="flex"></div>
          <paper-tabs selected="[[page]]" attr-for-selected="name" class="self-end">
            <paper-tab link name="about">
              <a href="/about" class="link" tabindex="-1">About</a>
            </paper-tab>
            <paper-tab link name="register" hidden$="[[signedIn]]">
              <a href="/register" class="link" tabindex="-1">Register</a>
            </paper-tab>
            <paper-tab link name="login">
              <a href="/login" class="link" tabindex="-1">Login</a>
            </paper-tab>
          </paper-tabs>
          <div class="flex"></div>
        </app-toolbar>
      </app-header>

      <div>
        <iron-pages selected="[[page]]"
                    attr-for-selected="name"
                    fallback-selection="404"
                    role="main">
          <my-about name="about"></my-about>
          <my-register name="register"></my-register>
          <my-login name="login"
                    signed-in="[[signedIn]]"
                    user="[[user]]"></my-login>
        </iron-pages>
      </div>

      <!-- Go to Console -->
      <!-- <paper-fab icon="input"></paper-fab> -->
    </app-header-layout>

    <paper-toast id="toast"></paper-toast>
  </template>

  <script>
    Polymer({
      is: 'my-app',

      properties: {
        page: {
          type: String,
          reflectToAttribute: true,
          observer: '_pageChanged'
        },

        user: {
          type: Object,
          observer: '_userChanged'
        },

        signedIn: {
          type: Boolean,
          observer: '_signedInChanged'
        }
      },

      observers: [
        '_routePageChanged(routeData.page)'
      ],

      listeners: {
        'register': '_register',
        'authenticate': '_authenticate',
        'logout': '_logout',
        'showToast': 'showToast'
      },

      ready: function() {
        this.$.auth.signOut();
      },

      toast: function(message) {
        this.$.toast.text = message;
        this.$.toast.show(message);
      },

      showToast: function(e) {
        this.$.toast.show({
          text: e.detail.message
        });
      },

      _authenticate: function(e) {
        var provider = e.detail.provider;
        this.$.auth.signInWithPopup(provider)
          .then(function(response) {
            console.log('successful!', response);
          }).catch(function(error){
            console.log('oops!', error);
          });
      },

      _userChanged: function(user) {
        // console.log(user);
      },

      _signedInChanged: function(signIn) {
        console.log(signIn);
        if (signIn) {
          this.page = 'login';
          this.set('route.path', '/login');
          this.toast('Sweet. Thanks for logging in!');
        } else {
          this.toast('Y U NO sign in?');
        }
      },

      _logout: function() {
        this.$.auth.signOut();
      },

      _register: function() {
        this.page = 'register';
        this.set('route.path', '/register');
      },

      _routePageChanged: function(page) {
        this.page = page || 'about';
      },

      _pageChanged: function(page) {
        // Load page import on demand. Show 404 page if fails
        var resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
        this.importHref(resolvedPageUrl, null, this._showPage404, true);
      },

      _showPage404: function() {
        this.page = '404';
      },

      handleError: function(e) {
        console.log(e);
      }
    });
  </script>
</dom-module>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

在firebase控制台中的授权域中添加域。例如添加localhost或127.0.0.1。

虽然firefox中的错误说:

  

在完成操作之前,用户已关闭弹出窗口。

Chrome提供了更具描述性的信息:

  

此域名(127.0.0.1)无权运行此操作。将其添加到Firebase控制台中的OAuth重定向域列表中 - &gt;验证部分 - &gt;登录方法标签。

答案 1 :(得分:0)

禁用browsersync在我的本地开发环境中为我解决了