我完全迷失了如何做到这一点。我希望能够仅使用用户名和密码对用户进行身份验证 - 因此我必须使用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
。此外,如果令牌始终相同,我不确定我是否理解这一点。
答案 0 :(得分:1)
您需要提供一种安全的方式来将用户名和密码从Android客户端传递到node.js服务器,然后从node.js服务器传回生成的令牌(或任何错误代码)给客户。
虽然这绝对是可能的(这几乎就是Firebase电子邮件+密码验证的工作方式),但它绝对是一个无法在StackOverflow答案中涵盖的主题。这是一个项目,而不是一个问题。
您可以考虑使用Firebase电子邮件+密码验证,然后删除电子邮件域。因此,如果用户使用用户名Nxt3
和密码注册,您只需将虚拟域附加到用户名并将其注册为Nxt3@dummydomain.com
。