Страница не найдена (индекс. html не найден в текущем каталоге) - Firebase Hosting - PullRequest
0 голосов
/ 06 февраля 2020

В настоящее время я работаю над созданием своей собственной страницы сброса пароля в моем проекте Angular Ioni c, поскольку тот, который предлагает Firebase, не позволяет мне дважды подтвердить свой новый пароль. Однако я столкнулся с проблемой, когда после нажатия на ссылку сброса пароля на go на моей собственной размещенной странице для сброса пароля возникает эта ошибка.

URL: https: // <>. firebaseapp.com/resetpassword?mode=resetPassword&oobCode=ngJAYwAiYPQv8Gx-FLsRBXY4IePBpIH-ZiFYbhdmdIsAAAFwGeOxEA&apiKey=<>&lang=en * 100 * * 100 * * 100 * * * 100 * ** * 100 * ** 100 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * служить, можно на go к странице, и она отображается как задумано. Я не уверен, почему у меня есть эта проблема. При запуске хостинга я установил для каталога publi c значение «sr c», которое содержит все коды для моего приложения Ioni c.

Вот мои коды для соответствующих страниц:

resetpassword.page.ts

import { Component, OnInit } from '@angular/core';
import * as firebase from 'firebase';
import { Router, ActivatedRoute } from '@angular/router';
import { AuthService } from '../shared/services/auth.service';
import { FormGroup, FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'app-resetpassword',
  templateUrl: './resetpassword.page.html',
  styleUrls: ['./resetpassword.page.scss'],
})
export class ResetpasswordPage implements OnInit {
  resetPasswordForm: FormGroup;
  submitted: boolean;
  mode: string;
  actionCode: string;
  continueUrl: string;
  lang: string;

  constructor(private router: Router, private activatedRoute: ActivatedRoute, private authService: AuthService) {
    this.resetPasswordForm = new FormGroup({
      npassword: new FormControl('', [Validators.required]),
      rnpassword: new FormControl('', [Validators.required])
    });
  }

  ngOnInit() {
    document.addEventListener('DOMContentLoaded', function() {
      // TODO: Implement getParameterByName()

      // Get the action to complete.
      this.mode = this.getParameterByName('mode');
      // Get the one-time code from the query parameter.
      this.actionCode = this.getParameterByName('oobCode');
      // (Optional) Get the continue URL from the query parameter if available.
      this.continueUrl = this.getParameterByName('continueUrl');
      // (Optional) Get the language code if available.
      this.lang = this.getParameterByName('lang') || 'en';

      // Configure the Firebase SDK.
      // This is the minimum configuration required for the API to be used.
      var config = {
        'apiKey': <<>apikey> // Copy this key from the web initialization
                            // snippet found in the Firebase console.
      };
      var app = firebase.initializeApp(config);
      var auth = app.auth();

      // Handle the user management action.
    }, false);
  }

  confirmResetPassword() {
    this.submitted = true;

    if (this.resetPasswordForm.valid) {
      if (this.resetPasswordForm.value.npassword === this.resetPasswordForm.value.rnpassword) {
        var config = {
          'apiKey': <<apikey>> // Copy this key from the web initialization
                              // snippet found in the Firebase console.
        };
        var app = firebase.initializeApp(config);
        var auth = app.auth();
        this.handleResetPassword(auth, this.actionCode, this.continueUrl, this.lang);
      }
      else {
        alert("Your new passwords do not match. Try again.")
      }
    }
  }

  handleResetPassword(auth, actionCode, continueUrl, lang) {
    // Localize the UI to the selected language as determined by the lang
    // parameter.
    var accountEmail;
    // Verify the password reset code is valid.
    auth.verifyPasswordResetCode(actionCode).then(function(email) {
      var accountEmail = email;

      // TODO: Show the reset screen with the user's email and ask the user for
      // the new password.

      // Save the new password.
      auth.confirmPasswordReset(actionCode, this.resetPasswordForm.value.npassword).then(function(resp) {
        // Password reset has been confirmed and new password updated.

        // TODO: Display a link back to the app, or sign-in the user directly
        // if the page belongs to the same domain as the app:
        // auth.signInWithEmailAndPassword(accountEmail, newPassword);

        // TODO: If a continue URL is available, display a button which on
        // click redirects the user back to the app via continueUrl with
        // additional state determined from that URL's parameters.
      }).catch(function(error) {
        // Error occurred during confirmation. The code might have expired or the
        // password is too weak.
      });
    }).catch(function(error) {
      // Invalid or expired action code. Ask user to try to reset the password
      // again.
    });
  }

  getParameterByName( name ){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if( results == null )
      return "";
    else
      return decodeURIComponent(results[1].replace(/\+/g, " "));
  }

}

resetpassword.page. html

<ion-header>
  <ion-toolbar>
    <ion-title>resetpassword</ion-title>
  </ion-toolbar>
</ion-header>

<ion-content>
  <form [formGroup]="resetPasswordForm" (ngSubmit)="confirmResetPassword()">
    <ion-item>
      <ion-label>New Password</ion-label>
      <ion-input type="password" formControlName="npassword"></ion-input>
    </ion-item>
    <ion-item>
      <ion-label>Retype New Password</ion-label>
      <ion-input type="password" formControlName="rnpassword"></ion-input>
    </ion-item>
    <ion-button expand="block" color="tertiary" type="submit">Set New Password</ion-button>
  </form>
  <ion-label *ngIf = "resetPasswordForm.controls.npassword.errors && submitted" color="danger">
    New Account Password is required.
  </ion-label>
  <br>
  <ion-label *ngIf = "resetPasswordForm.controls.rnpassword.errors && submitted" color="danger">
    Retype New Account Password is required.
  </ion-label>
</ion-content>

Я следовал инструкциям с этого сайта Google Firebase (https://firebase.google.com/docs/auth/custom-email-handler).

Большое спасибо всем, кто отвечает заранее!

С наилучшими пожеланиями, Даниэль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...