【问题标题】:Firebase - How to disable user using Cloud Function?Firebase - 如何禁用使用云功能的用户?
【发布时间】:2019-04-05 22:14:43
【问题描述】:

我正在尝试制定一个启用/禁用用户云功能。当使用管理 SDK 禁用用户时,我得到响应:disabled 属性是只读的。有人可以帮我吗?传递给函数的数据是用户 ID。

 export const disableUser = functions.https.onCall((data, context) => {
    console.log(data);

    admin.auth().updateUser(data, {
        disabled: true
    }).then(() => {
        admin.firestore().collection('users').doc(data).update({ disabled: true})
            .then(() =>  {
                console.log(`Successfully disabled user: ${data}`);

                return 200;
            })
            .catch((error => console.log(error)));        
    }).catch( error => console.log(error));

    return 500;
});

【问题讨论】:

标签: firebase google-cloud-functions


【解决方案1】:

您似乎正试图从您的函数中返回一个 HTTP 状态代码。它不是那样工作的。请read the documentation for callable functions了解返回内容。

由于您在函数中执行异步工作(updateUser(),然后是 update()),因此您需要返回一个 promise,该 promise 会解析要发送给客户端的数据。现在,您只是在异步工作完成之前返回500。至少,您需要从 update() 返回承诺,以便 Cloud Functions 知道您的异步工作何时完成。

return admin.auth().updateUser(...)
.then(() => {
    return admin.firestore().collection('users').doc(data).update(...)
})

在处理 Cloud Functions for Firebase 时,了解 Promise 的工作原理至关重要。你不能只返回你想要的任何东西。

【讨论】:

  • 您好,Doug,谢谢您的提示。我确实还在研究如何正确实现这些云功能。但是,所有代码似乎都运行良好。您能否让我知道这种禁用方法是否正确?该函数记录 disabled 属性是只读的。
  • 我试过了,结果发现它通过添加返回效果很好。非常感谢!
【解决方案2】:

我将 typeScript 用于 Cloud Functions。

index.ts

import * as functions from 'firebase-functions';

export const disableUser = functions.https.onCall((data, context) => {
  const userId = data.userId;
  return functions.app.admin.auth().updateUser(userId, {disabled: true});
});

在我的应用程序中,我这样调用“disableUser”函​​数:

import {AngularFireFunctions} from '@angular/fire/functions';

export class AppComponent {

data$: Observable<any>;
callable: (data: any) => Observable<any>;

constructor(private fns: AngularFireFunctions) {
  this.callable = fns.httpsCallable('disableUser');
  this.data$ = this.callable({userId: 'ZDxaTS0SoYNYqUVJuLLiXSLkd8A2'});
}

【讨论】:

    猜你喜欢
    • 2019-04-26
    • 2019-09-09
    • 2018-12-07
    • 2020-10-10
    • 2019-10-09
    • 2020-02-28
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多