无法生成firebase自定义令牌

时间:2016-08-19 05:42:19

标签: node.js firebase firebase-authentication

我已遵循本指南:https://firebase.google.com/docs/server/setup

我创建了我的密钥并收到了我的* .json文件。我也有安装了所需的npm软件包的代码。

var http = require('http');
var httpdispatcher = require('httpdispatcher');
var firebase = require('firebase');

firebase.initializeApp({
  serviceAccount: "<my-service-account>.json",
  databaseURL: "https://<project-id>.firebaseio.com"
});

const PORT=8080; 

httpdispatcher.onGet("/firebaseCustomToken", function(req, res) {
    var uid = req.params.uid;

    if (uid) {
        var customToken = firebase.auth().createCustomToken(uid);
        res.writeHead(200, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({'firebaseJWT' : customToken}));
    } else {
        res.writeHead(400, {'Content-Type': 'text/plain'});
        res.end('No uid parameter specified');
    }
});    

function handleRequest(request, response){
     try {
        //log the request on console
        console.log(request.url);
        //Disptach
        httpdispatcher.dispatch(request, response);
    } catch(err) {
        console.log(err);
    }    
}

//create a server
var server = http.createServer(handleRequest);

//start our server
server.listen(PORT, function(){       
    console.log("Server listening on: http://localhost:%s", PORT);
});

然而,当向/ firebaseCustomToken发送GET请求时?uid = 123456我收到此错误

[Error: error:0906D066:PEM routines:PEM_read_bio:bad end line]

我已经读过这可能与私钥的格式有关,但是我怎么能修改从firebase控制台收到的文件?

1 个答案:

答案 0 :(得分:0)

PEM是访问Firebase的关键,您应该在.json文件中下载。它可能是.json文件的路径不正确。

如果你解决了这个问题,你可能会遇到另一个错误。 Firebase和服务器建立websocket连接。调用createCustomToken()时,将生成令牌并通过websocket连接告知firebase。您将令牌发送到请求身份验证的客户端以响应客户端请求。然后客户端通过调用.signInWithCustomToken(令牌)登录。

您还需要在客户端配置和初始化firebase。查看Web,iOS或Android文档。

如果您无法使用,请告诉我,我明天可以发布一些代码段。