使用 nodejs 通过蒸汽登录登录网站
Login into a website with steam login using nodejs
我正在尝试登录一个网站,例如以下示例csgolounge,它需要使用nodejs进行蒸汽登录身份验证。
甚至认为我已经尝试了一些事情,它们都没有接近工作,所以我没有必要在这里包含代码。
我想知道是否有任何方法可以做到这一点。
编辑:我想我的问题写错了,因为我希望节点应用程序使用 steam 登录到 csgolounge,而不是有一个带有登录选项的"像"csgolounge 的网站。
回答你的问题,是的。有一种方法可以做到这一点。
您需要做的第一件事是获取一个 steam api 密钥,您可以通过前往此处来完成。然后正如蒸汽所说:
只需下载适用于您选择的语言和平台的 OpenID 库,并使用 http://steamcommunity.com/openid 作为提供商。返回的声明 ID 将包含用户的 64 位 SteamID。声明的 ID 格式为:http://steamcommunity.com/openid/id/
如果您打算使用 Node.JS我建议您查看 node-jsonwebtoken 或 passport-openidconnect。如果您选择使用护照,那么已经有人制定了包括蒸汽在内的"策略"。在这里查看。
我有同样的问题,我不知道它是否对您有帮助,但是我编写了一些方法来获取用户steamID,然后您可以使用此方法使用它来获取用户信息。我这样做只是知道如何用 PHP 做到这一点 - 这就是为什么我想在 js 上重写它。
1)建立链接的方法
const http_build_query = (obj) => {
let str = ""
for (const key in obj) {
const value = obj[key];
str += `${key}=${value}&`;
}
return str;
}
2)返回链接的方法,您应该去Steam登录(您也可以在)
const genUrl = (urlToReturnTo) => {
const params = {
'openid.ns' : 'http://specs.openid.net/auth/2.0',
'openid.mode' : 'checkid_setup',
'openid.return_to' : urlToReturnTo,
'openid.realm' : 'http://localhost:8080',
'openid.identity' : 'http://specs.openid.net/auth/2.0/identifier_select',
'openid.claimed_id' : 'http://specs.openid.net/auth/2.0/identifier_select',
};
const url = `${STEAM_LOGIN}?${http_build_query(params)}`
return url;
};
同样在方法 genUrl 中,您需要作为参数 url 传递,您希望在登录后重定向到其中。如果登录成功,您将被重定向到您的网址,并在网址中有一些参数,它看起来像"http://yoururl?here_is_params"你需要从我使用的 URL 中获取一些 [here_is_params] 的方法:
const search = location.search.substring(1);
const urlObj = JSON.parse('{"' + decodeURI(search).replace(/"/g, '''"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')
所以在那之后,你将有一个带有查询参数的对象
3)现在你需要它从这个对象获取steamID:
const getUserId = (response) =>
{
const str = response["openid.claimed_id"];
const res = decodeURIComponent(str)
const propsArr = res.split("'/");
console.log(propsArr);
return propsArr[propsArr.length-1];
}
const userId = getUserId(urlObj)
4)现在你有了userId,你需要它通过fetch或axios发送请求。它将返回一个包含用户数据的 JSON OBJ
http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={apiKey}&steamids=${userId}
- 使用 nodejs 通过蒸汽登录登录网站
- 使用Ajax登录网站
- 使用自制的html表单注册/登录网站
- 使用javascript提交按钮登录网站(使用Java)
- NodeJS爬虫登录网站
- 谷歌登录(网站)-javascript
- 使用javascript注册和登录网站
- 使用python使用javascript和https登录网站
- 使用casperjs登录网站
- 使用SAML令牌,JSON Web服务的客户端-登录网站后
- 如何使用Applescript通过Chrome自动登录网站
- 使用angularJS表单自动登录网站
- 加载后自动登录网站-用户脚本(JS)
- 在不使用数据库的情况下登录网站
- 使用PHP、jQuery登录网站
- 使用Windows Phone网页浏览器登录网站
- 自动登录网站
- HtmlUnit -登录网站后,页面不会重定向
- 使用WebBrowser控件以编程方式登录网站时出现问题
- 通过脚本自动登录网站