使用Firebase和Node.js在Android上验证用户身份

时间:2016-02-17 05:12:54

标签: android node.js firebase

我完全迷失了如何做到这一点。我希望能够仅使用用户名和密码对用户进行身份验证 - 因此我必须使用Firebase中的customAuth

我创建了一个处理令牌生成的服务器(node.js)(在Heroku上运行):

var express = require('express')
var Firebase = require('firebase')
var app = express()

app.set('port', (process.env.PORT || 5000))
app.use(express.static(__dirname + '/public'))

app.listen(app.get('port'), function() {
  console.log("Node app is running at localhost:" + app.get('port'))
})

var SECRET = "numbers would be here";

var tokenGenerator = new FirebaseTokenGenerator(SECRET);
var AUTH_TOKEN = tokenGenerator.createToken({
  uid: "arbitrary",
  data: "blahblahblah"});
  console.log(AUTH_TOKEN);

var ref = new Firebase("null");
ref.authWithCustomToken(AUTH_TOKEN, function(error, authData) {
  if (error) {
    console.log("Login Failed!", error);
  } else {
    console.log("Login Succeeded!", authData);
  }
});

现在我有一个Android应用程序,我想在其中验证用户。如果我有类似的东西,

Firebase mRef = new Firebase("myFirebaseUrl");
mRef.authWithCustomToken(String token, AuthResultHandler handler); //issue

我不知道如何获得token。此外,如果令牌始终相同,我不确定我是否理解这一点。

1 个答案:

答案 0 :(得分:1)

您需要提供一种安全的方式来将用户名和密码从Android客户端传递到node.js服务器,然后从node.js服务器传回生成的令牌(或任何错误代码)给客户。

虽然这绝对是可能的(这几乎就是Firebase电子邮件+密码验证的工作方式),但它绝对是一个无法在StackOverflow答案中涵盖的主题。这是一个项目,而不是一个问题。

您可以考虑使用Firebase电子邮件+密码验证,然后删除电子邮件域。因此,如果用户使用用户名Nxt3和密码注册,您只需将虚拟域附加到用户名并将其注册为Nxt3@dummydomain.com