在我的主页上,我有以下链接:
<a href="/login">Login with Github</a>
在我的app.js中,我有以下内容:
app.get('/login', function(req, res) {
var ref = new Firebase('https://hrr-kitchen.firebaseio.com');
ref.authWithOAuthPopup('github', function(err, authData) {
console.log('in authWithOAuthPopup');
if (err) {
console.log(err.code);
} else if (authData) {
// user authenticated with GitHub
console.log('User ID: ' + authData.uid);
}
});
});
我花了几个小时在网上搜索,我尝试了很多不同的东西,我的眼睛是环状的。我想我可能需要从html中调用一个函数并将代码放在一个函数中,我现在很想尝试在服务器外部的javascript中进行操作,但我觉得这很简陋。
我是firebase和express的新手,我无法弄清楚这一点。请帮帮忙?
编辑:我已经能够通过改变我的HTML看起来像这样:
<script type="text/javascript">
var ref = new Firebase('https://hrr-kitchen.firebaseio.com');
githubLogin = function () {
login(function(err, authData) {
var username = authData.github.username;
});
};
var login = function(cb) {
ref.authWithOAuthPopup('github', cb, {
remember: "sessionOnly"
});
};
</script>
<button onclick="githubLogin();">Login with Github</button>
但我真的想弄清楚如何正确地表达它!谢谢!
答案 0 :(得分:2)
Firebase库中的身份验证方法仅适用于客户端。
如果需要在服务器上进行身份验证,则应使用生成的令牌中的authWithCustomToken
。 The Firebase docs have a detailed section on generating tokens
真正的问题是,为什么你需要在服务器上使用GitHub进行身份验证? Firebase旨在完成客户端上几乎所有的开发工作。
答案 1 :(得分:0)
我最终通过Firebase破坏了登录并使用了passport-github。谢谢你的帮助!