有没有办法只使用现有帐户授权用户?

Is there a way to authorize users with existing account only?

我正在开发一个 flutter 移动应用程序,我在其中使用 Google SignIn for Auth,有没有办法只使用现有帐户授权用户?

阻止用户创建新帐户?我一直在寻找同样的东西,但没有找到一种方法来使用任何 Firebase 项目设置来做到这一点。

我认为解决方案是考虑 authenticationauthorization 之间的区别。 Firebase 的身份验证服务的名称很贴切。它执行 身份验证 - 验证用户确实是他们声称的那个人。它不执行 授权 - 控制允许经过身份验证的用户执行哪些操作或他们可以在应用程序中访问哪些数据。应用开发者必须负责管理用户 授权.

例如,一种方法是在 Firestore 中维护 "authorized users" 的集合。当用户 验证 时,您的应用程序将执行查找以查看当前用户是否确实 授权 。可以为 Firestore 和 Firebase Cloud Storage 编写安全规则,以在允许访问数据之前验证当前用户是否在 "authorized users" 集合中。但这需要额外的数据查询才能获得此授权信息。

我更喜欢的授权方法是使用可以使用 Firebase Admin 库分配的自定义声明。可以将自定义声明添加到现有用户帐户,该帐户可以充当标志,指示他们被授予的授权类型。前端代码可以检查他们为自定义声明颁发的身份验证令牌,以确定他们被授予的授权。服务器端代码和安全规则还可以在提交的请求中检查那些必需的自定义声明。

实际上,您在不同用户可能具有不同访问级别的情况下构建的任何应用程序都需要您处理授权。我相信分配经过深思熟虑的自定义声明是最好的解决方案。