是否可以在 Firebase 中只接受来自我的应用的函数调用?

San*_*tau 6 unity-game-engine firebase google-cloud-functions google-cloud-firestore

我正在 Unity 中创建一个游戏,用户可以在其中使用 Level Creator 系统贡献关卡。

我的应用程序以某种方式设置,我只需要使用级别信息调用云函数,它会处理重复条目并将其保存到 Firestore。所有这一切都完美无缺。

我的问题基本上是:我可以让我的函数接受来自我的游戏的调用吗?(没有我的用户注册?)。

当然,我正在使用functions.https.onCall((data, context) => {}). 在Firebase的文档中,我注意到它们用于context.auth检查用户是否经过身份验证。但是,我正在将此值记录到控制台,它似乎是undefined.

我也对同一链接中的这一行感到困惑:

对于可调用对象,Firebase 身份验证和 FCM 令牌(如果可用)会自动包含在请求中。

也许context.auth未定义是因为我的游戏尚未在 Google Play / Apple Store 中出现?有任何想法吗?

Dou*_*son 5

不可能将可调用函数的调用限制为仅一个应用程序,并且该应用程序是否发布到任何商店都无关紧要。部署功能后,任何有互联网连接的人都可以访问它。

您能做的最好的事情就是要求您的用户在应用程序中使用Firebase 身份验证进行身份验证,然后context.auth检查该函数以确定它是否应该执行用户想要的操作。 context.auth在没有认证的情况下将是未定义的。如果您的代码确定该函数不应继续执行,您可以提前返回。但该函数仍然被调用。


Fra*_*len 5

多亏了名为Firebase App Check的新功能,现在实际上可以将 Callable Cloud Functions 的调用限制为仅来自在 Firebase 项目中注册的 iOS、Android 和 Web 应用程序的调用。

通常你会想这与用户认证为基础的安全是道格介绍他结合的答案,让你有针对滥用用户的另一屏蔽部使用你的应用程序。