【发布时间】:2017-04-10 23:47:53
【问题描述】:
我已经使用谷歌云端点(版本 1,使用 android studio)为我的 android 应用程序构建了一个移动后端。我希望通过电子邮件/密码对我的用户进行身份验证,因此我使用 Firebase 身份验证来执行此操作。 Firebase Authentication sdk 允许我在客户端(在 android 中)获取每个用户的令牌,而 firebase admin sdk 允许我检查后端令牌的有效性。我知道在云端点中我可以提供我自己的自定义身份验证器(请参阅:Google Cloud Endpoints and user's authentication),并且我计划在我的自定义身份验证器中调用 firebase admin sdk 来验证用户提供的令牌。
我的问题是,由于我使用谷歌云端点来构建我的后端,我不知道在哪里插入代码来初始化我可以验证任何令牌之前需要的 firebase 管理对象。在常规的应用程序引擎环境中,您可以在 HTTPServlet 的 init() 方法中执行此初始化(请参阅 https://github.com/GoogleCloudPlatform/firebase-appengine-backend/blob/master/src/main/java/com/google/cloud/solutions/flexenv/backend/MessageProcessorServlet.java ),但云端点通过自动提供“SystemServiceServlet”作为 HTTPServlet 对您隐藏了这一点。我已经尝试继承 SystemServiceServlet 并覆盖 init() 方法,但随后将端点部署到应用程序引擎失败,因为显然,创建 android 客户端库要求必须使用 SystemServiceServlet(并且必须将其命名为“SystemServiceServlet ")。
我可以在云端点提供的每个 api 方法中(例如,在我的 api 的 insert 方法中)初始化 firebase 管理应用程序,但这似乎效率极低。我将如何在使用谷歌云端点构建的后端中使用 Firebase admin sdk?
非常感谢您的宝贵时间
【问题讨论】:
-
如果您只想生成自定义令牌,请使用此库生成自定义令牌 --> github.com/jwtk/jjwt。它易于使用,并且您不会遇到使用此库进行初始化的问题。
标签: android google-app-engine firebase-authentication google-cloud-endpoints firebase-admin