2

我将 AngularFire2 (2.0.0-beta.2) 与 angular2 (2.0.0-rc.4) 结合使用。使用 Angularfire,我可以通过编程方式创建一个用户(电子邮件/密码)

angularFire.auth.createUser({email : this.email, password; this.password})

该部分按预期工作。随后,我想更新电子邮件地址或密码。我已经检查了 AngularFire 源代码,但似乎没有一种机制可以做到这一点。我在这个评估中是否正确?如果我是正确的,我应该期望在即将发布的版本中看到一种机制,还是应该只使用原生 Firebase 机制?

4

3 回答 3

1

You are looking to use $firebaseAuth(). Just inject it in your controller and go with

$firebaseAuth().$updateEmail("email@email.com");
$firebaseAuth().$updatePassword("newpass123");
于 2016-07-09T18:44:13.250 回答
1

我认为我的回答会有所帮助,firebase-admin可以使用云功能更改密码,您只需从客户端传递电子邮件新密码(Angular,ionic,...)

云功能:

import * as functions from 'firebase-functions';

import * as admin from 'firebase-admin';
const cors = require('cors')({ origin: true });

export const resetUserPassword = functions.https.onRequest( async (req, res) => {

return cors( req, res, async () => {
    const email = req.body.data.email;
    const password = req.body.data.password;

    admin.auth().getUserByEmail(email)
    .then((getUserRecord) => {
      admin.auth().updateUser(getUserRecord.uid, {
        email,
        password
      })
      .then(function(userRecord) {
        res.send({
          status: 200,
          data: userRecord
        })
      })
      .catch(function(error) {
        res.send({
          status: 500,
          data: error
        })
      });
    })
    .catch((error) => {
      console.log('Error fetching user data:', error);
    });
  })
});

客户端代码(IONIC):

import { AngularFireFunctions } from '@angular/fire/functions';
export class AuthService {
constructor(
 private functions: AngularFireFunctions
) {}
  resetUserPassword() {
    const userNewCredential = {email: 'user-email', password: 'your-new-password'};
    this.functions.httpsCallable('resetUserPassword') 
    (userNewCredential).toPromise().then((updatedUser) => {
      console.log(updatedUser);
    }).catch((error) => console.log(error));
 }
于 2019-07-31T19:20:24.437 回答
0

我将尝试回答我自己的问题。我认为 AngularFire2 公共 API 缺少一些与 firebase 身份验证相关的功能。例如,我认为当前版本的 AngularFire (2.0.0-beta2) 无法更新电子邮件地址或密码,或发送密码重置电子邮件。我认为解决这个当前缺点的方法是获取本机 firebase 对象并使用本机 firebase 方法来解决。但是,我无法弄清楚如何使用 AngularFire2 访问本机 FireBase 对象。我已经发布了这个问题,看看是否有人可以帮助我做到这一点。

于 2016-07-11T15:36:28.873 回答