我一直在讨论(firebase& nodejs)问题,这是该问题的第四部分,如何在登录后传递数据 server.js
我已经尝试this但未能让它发挥作用。
基本上我正在尝试将用户 idToken 发送到服务器以验证它。
这是我尝试过的:
const promise = auth.signInWithEmailAndPassword(email, pass).then(function(){
$('.load-bar').hide();
firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idToken) {
// Send token to your backend via HTTPS
console.log(data);
$http.get('server', {params: {idToken: idToken}})
.success(
function(success){
console.log('success');
})
.error(
function(error){
console.log(error)
});
}).catch(function(error) {
// Handle error
});
});
但它没有做任何错误,没有成功,并且 server.js
app.get('/server', function(req,res, next){
console.log(req.query.idToken);
});
但仍然没有。我做错了什么?
答案 0 :(得分:1)
如果您未从class Foo {
bar() {
barMethod.call(this)
}
}
返回Promise
,则then
将返回Promise
。要成功解决承诺,您需要返回undefined
并以错误终止,您需要返回Promise.resolve
。试试这个 -
Promise.reject
答案 1 :(得分:0)
您的路线需要回复:
app.get('/server', function(req,res, next){
console.log(req.query.idToken);
return res.send('success!');
});
答案 2 :(得分:0)
问题是您没有将您的回复发送回api通话来源。这就是为什么你没有获得成功或错误的结果。
将服务器中的代码更改为:
app.get('/server', function(req, res, next){
console.log(req.query.idToken);
res.send(200);/*Just sends success code*/
//res.send("Token rcvd");/*Or send some custom message back to call origin*/
});