我使用AngularFire2(2.0.0-beta.2)与angular2(2.0.0-rc.4)组合。使用Angularfire我可以使用
以编程方式创建用户(电子邮件/密码)angularFire.auth.createUser({email : this.email, password; this.password})
该部分按预期工作。随后,我想更新电子邮件地址或密码。我已经检查了AngularFire源,但似乎并没有这样做的机制。我在这次评估中是否正确?如果我是正确的,我是否应该期待在即将发布的版本中看到一种机制,还是应该使用本机Firebase机制?
答案 0 :(得分:1)
您希望使用$firebaseAuth()
。只需将其注入控制器并使用
$firebaseAuth().$updateEmail("email@email.com");
$firebaseAuth().$updatePassword("newpass123");
答案 1 :(得分:1)
我认为我的答案会有所帮助, firebase-admin 可以使用云功能更改密码,而您只需传递电子邮件和来自客户端(角度,离子,...)的新密码
云功能:
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));
}
答案 2 :(得分:0)
我将尝试回答我自己的问题。我认为AngularFire2公共API缺少一些与firebase身份验证相关的功能。例如,我不认为当前版本的AngularFire(2.0.0-beta2)能够更新电子邮件地址或密码,或发送密码重置电子邮件。我认为目前这个缺点的解决方案是获取本机firebase对象并只使用本机firebase方法来解决。但是,我还没有能够弄清楚如何使用AngularFire2访问本机FireBase对象。我发布了this个问题,看看是否有人可以帮我这样做。