gpt4 book ai didi

javascript - 如何使用 Firebase 实现 Steam 身份验证?

转载 作者:行者123 更新时间:2023-12-04 11:06:00 29 4
gpt4 key购买 nike

我发现的只是这个旧答案:

https://groups.google.com/forum/#!topic/firebase-talk/rApG8QQd6t4

同胞 SOer 是否知道任何信息,或者 Firebase 工程师能否提供更详细的答案?

我目前正在尝试使用此库对 Steam 用户进行身份验证:

https://github.com/liamcurry/passport-steam

然后使用 Firebase 自定义 token 让用户进入我的 Firebase 身份验证系统。

我不知道这是否是正确的方法。无论如何,我被困住了。

编辑:

这是我当前的代码:

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) 这可行,但会将 Steam 声明的 ID 公开为用户的公共(public) UID。公开用户声称的 ID 是否安全?这是否意味着任何人都可以通过使用他声称的 ID 来冒充我的用户?

2)我的 Firebase Auth 仪表板中的“标识符”下没有任何内容。登录用户时如何指定标识符?

3) 事实上,我应该使用什么作为 uid创建自定义 token 时?

最佳答案

你的做法是正确的,another question 中也提到过。据说“Firebase 支持使用任何提供商登录,只要您愿意为其编写代码。”。该问题还给出了 link对于任何有兴趣实现 Steam 身份验证的人来说,这样做的文档。解释一下,firebase 支持某些开箱即用的身份验证提供程序,当它不支持身份验证提供程序时,您需要编写自己的身份验证代码,这是一个生成身份验证 token 的过程。链接的文章解释了您应该如何生成 token 。

关于javascript - 如何使用 Firebase 实现 Steam 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44758262/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com