无法弄清楚使用Firebase登录Github

时间:2014-12-09 04:58:58

标签: javascript node.js express oauth firebase

在我的主页上,我有以下链接:

    <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>

但我真的想弄清楚如何正确地表达它!谢谢!

2 个答案:

答案 0 :(得分:2)

Firebase库中的身份验证方法仅适用于客户端。

如果需要在服务器上进行身份验证,则应使用生成的令牌中的authWithCustomTokenThe Firebase docs have a detailed section on generating tokens

真正的问题是,为什么你需要在服务器上使用GitHub进行身份验证? Firebase旨在完成客户端上几乎所有的开发工作。

答案 1 :(得分:0)

我最终通过Firebase破坏了登录并使用了passport-github。谢谢你的帮助!