7

我正在尝试使用 firebase-admin 使用 node.js 登录,但是当我在那里查找 API 时,它们只有在和上update的部分。deletecreate

他们确实有关于如何通过电子邮件获取用户的部分,但如果我想登录用户,我不应该也通过他们的密码进行验证。我觉得我错误地阅读了如何使用 firebase-admin。我最好的猜测是我应该使用直接的 Firebase 而不是新的 firebase-admin。

编辑:

如果可能的话,我只想通过电子邮件(即不是通过 google 登录或 facebook 登录)登录用户。

4

3 回答 3

8

Firebase Admin Node.js SDKfirebase-admin在 npm 上)用于管理操作,例如在没有现有密码的情况下获取用户数据或更改用户的电子邮件。如果您只想以用户身份登录,则应使用Firebase 客户端 Node.js SDKfirebase在 npm 上)。

于 2017-03-23T02:27:41.150 回答
1

这是另一篇文章中的答案: 如何在 nodejs 中的 firebase-admin 中验证用户?.

复制和粘贴,以防万一:

安装 firebase 模块: npm install firebase --save

const firebase = require("firebase");
const config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: ""
};
firebase.initializeApp(config);
exports.login = functions.https.onRequest((req, rsp)=>{
    const email = req.body.email;
    const password = req.body.password;
    const key = req.body.key;
    const _key = '_my_key_';
    let token = '';
    if(key === _key){           
    firebase.auth().signInWithEmailAndPassword(email,password).then((user)=>{
//The promise sends me a user object, now I get the token, and refresh it by sending true (obviously another promise)            
user.getIdToken(true).then((token)=>{
                rsp.writeHead(200, {"Content-Type": "application/json"});
                rsp.end(JSON.stringify({token:token}));
            }).catch((err)=>{
                rsp.writeHead(500, {"Content-Type": "application/json"});
                rsp.end(JSON.stringify({error:err}));
            });
        }).catch((err)=>{
            rsp.writeHead(500, {"Content-Type": "application/json"});
            rsp.end(JSON.stringify({error:err}));
        });
    } else {
        rsp.writeHead(500, {"Content-Type": "application/json"});
        rsp.end(JSON.stringify('error - no key'));
    }
});
于 2019-03-20T18:07:47.833 回答
-1

如果您仍在寻找不使用客户端库的登录,这里是方法。

根据所需的操作向以下 url 发出请求

注册:https ://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser

登录:https : //www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword

这允许通过向上述 url 发出 http 请求来创建/登录用户。您将获得所需的令牌,这些令牌与 firebase 兼容。我假设 firebase 在客户端库中内部使用这些 url。

希望它有帮助!

于 2019-08-05T05:30:30.733 回答