【问题标题】:Firebase Cloud Functions authentication for Android AppAndroid 应用的 Firebase Cloud Functions 身份验证
【发布时间】:2020-06-10 07:10:11
【问题描述】:

我正在构建一个用于搜索附近位置的 Android 应用。我使用 Firebase 登录系统(使用电子邮件和密码登录,并使用 Google、Facebook 等登录),因此我还想使用 Firebase 构建一个 API。 (也因为我需要更复杂的应用程序)我已经使用 Firebase Cloud Functions 构建了一个无服务器 API,并且可以使用 Postman 发出 GET/PUT 请求。但是,我想保护这些端点,类似于 JWT 保护 RESTAPI 的方式,以便只有登录应用程序的用户才能发出请求。我如何实现这一目标?我看过“authorized-https-endpoint”,但它似乎只允许谷歌登录。

或者有没有办法让我仍然可以使用 Node 和 Mongodb RestAPI,并使用登录到 Firebase 的帐户来保护它?

这是一段后端代码

app.get('/api/read/:item_id', (req, res) => {
(async () => {
    try {
        const document = db.collection('items').doc(req.params.item_id);
        let item = await document.get();
        let response = item.data();
        return res.status(200).send(response);
    } catch (error) {
        console.log(error);
        return res.status(500).send(error);
    }
    })();
});


exports.app = functions.https.onRequest(app);

提前非常感谢你们。

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    使用 Firebase 可调用函数。它们满足您的要求。

    参考:https://firebase.google.com/docs/functions/callable

    如果函数调用出现问题,请参阅:firebase.google.com/docs/functions/callable-reference。
    正如这里提到的,这仅在 SDK 不适合您时使用

    【讨论】:

    • 感谢您的回答,但例如,如果我想从网站调用 API,那不可能正确?
    • @trpn39 Firebase 支持 Web、Android 和 iOS。所以理想情况下它应该可以工作。
    • 如果函数调用有问题,请参考:firebase.google.com/docs/functions/callable-reference。正如这里提到的,这仅在 SDK 不适合您时使用。
    【解决方案2】:

    authorized-https-endpoint 示例支持客户端上所有形式的身份验证,只要它通过 Firebase 身份验证 SDK。在所有情况下,客户端都可以向函数发送身份验证令牌,函数代码可以使用Firebase Admin SDKverify the token。用户的身份验证方式无关紧要 - 任何 Firebase 用户帐户都可以使用。

    您也可以使用callable function,它会以完全相同的方式自动为您执行验证。然后,您的代码必须在继续之前检查用户是否使用调用上下文进行了身份验证。

    【讨论】:

    • 嗨,道格,感谢您的回答。我已经从各种问题中看到了您的答案,并且我一直在努力遵循这些代码。这是因为我对 firebase 和后端都很陌生:D 不过我会再试一次。
    猜你喜欢
    • 2020-09-17
    • 2019-04-04
    • 1970-01-01
    • 2020-01-16
    • 2018-07-09
    • 2018-07-23
    • 2020-10-25
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多