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

私の答えが役立つと思います。クラウド機能を使用して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 に答える