如何使用Firebase实施Steamvalidation?
我发现的只是这个旧的答案:
https://groups.google.com/forum/#!topic/firebase-talk/rApG8QQd6t4
同事是否知道任何信息,或者Firebase工程师能否提供更详细的答案?
我目前正在尝试使用此库来validation用户使用Steam:
https://github.com/liamcurry/passport-steam
然后使用Firebase自定义令牌在我的Firebase身份validation系统中获取用户。
我不知道这是否正确。 无论如何,我卡住了。
编辑:
这是我现在的代码:
app.js
var passport = require('passport'); var SteamStrategy = require('passport-steam').Strategy; app.use(passport.initialize()); passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new SteamStrategy({ returnURL: 'http://localhost:8080/users/steam/return', realm: 'http://localhost:8080/', apiKey: steamKey.steam, stateless:true }, function(identifier, profile, done) { profile.identifier = identifier; return done(null, profile); } ));
users.js
router.get('/steam', passport.authenticate('steam', { failureRedirect: 'login' }), function(req, res, next) { }); router.get('/steam/return', function(req, res, next) { req.url = req.originalUrl; next(); }, passport.authenticate('steam', { failureRedirect: 'users/login' }), function(req, res) { console.log(JSON.stringify(req.query)); var oid = req.query["openid.claimed_id"]; var array = oid.split("/id/"); console.log("Array: "+array); var result = array[1]; console.log(result); admin.auth().createCustomToken(result) .then(function(customToken) { res.render("users/login",{token: customToken, passed: true}); }) .catch(function(error) { console.log("Error creating custom token:", error); }); });
用户/ login.ejs:
<a href="steam"><img id="steamLogin" src="../../public/assets/steamLogin.png"/></a> <script> if ("<%=passed%>" == "true") { firebase.auth().signInWithCustomToken("<%=token%>").catch(function(error) { if (error) { alert(error); } else { res.redirect("screenshots/index"); } }); } </script>
我目前的问题如下:
1)这个工作,但暴露蒸汽声称的ID作为用户的公共UID。 公开用户声明的ID是否安全? 这不意味着任何人都可以使用他声称的ID来冒充我的用户吗?
2)我的Firebase身份validation信息中心中的“标识符”下没有任何内容。 签入用户时如何指定标识符?
3)实际上,创build自定义令牌时应该使用什么作为uid
?
- 根据MongoDB检查login凭据不起作用
- 使用app.set('app_secret',data)将密钥存储在nodejs中是否安全?
- 通过我的REST API和Facebook进行用户身份validation
- 谷歌Oauth给代码赎回错误
- Express res.render不能使用Angular路由
- Passport.js本地策略不带mongoose
- 尝试在节点中实现JWT身份validation。 在受保护的路线上获得未经授权
- 在passportjs响应之前的Expressjs / Change header
- 在对Google表单进行多次调用时,API身份validation不适用于第二次调用:请求的身份validation范围不足