Javascript 使用nodejs使用steam登录网站

Javascript 使用nodejs使用steam登录网站,javascript,node.js,steam,Javascript,Node.js,Steam,我正在尝试登录到一个网站,比如本例中的csgolounge,它需要使用nodejs进行steam登录身份验证 尽管我已经尝试了一些东西,但它们都没有成功,所以在这里包含代码是没有意义的 我想知道是否有办法做到这一点 编辑:我想我的问题写得不正确,因为我希望节点应用程序使用steam登录到Csgoonge,而没有一个带有登录选项的“类似”Csgoonge的网站。回答您的问题,是的。有一种方法可以做到这一点。 您需要做的第一件事是获取一个steam api密钥,您可以通过标题来完成。正如steam所

我正在尝试登录到一个网站,比如本例中的csgolounge,它需要使用nodejs进行steam登录身份验证

尽管我已经尝试了一些东西,但它们都没有成功,所以在这里包含代码是没有意义的

我想知道是否有办法做到这一点


编辑:我想我的问题写得不正确,因为我希望节点应用程序使用steam登录到Csgoonge,而没有一个带有登录选项的“类似”Csgoonge的网站。

回答您的问题,是的。有一种方法可以做到这一点。

您需要做的第一件事是获取一个steam api密钥,您可以通过标题来完成。正如steam所说:

只需为您选择的语言和平台下载一个OpenID库,并作为提供者使用。返回的声明ID将包含用户的64位蒸汽ID。声明的ID格式为:
如果您打算使用Node.JS,我建议您签出或。如果您选择使用passport,则有人已经制定了包含steam的“策略”。检查一下。

我也有同样的问题,我不知道它是否对您有帮助,但我编写了一些方法来获取用户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登录的链接(您也可以在中使用)

同样在方法genUrl中,您需要作为参数url传递,以便在登录后重定向到该url。如果登录成功,您将被重定向到您的url,并且在url中有一些参数,看起来像“” 您需要从我使用的url中了解[这里是参数]:

const search = location.search.substring(1);
const urlObj = JSON.parse('{"' + decodeURI(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')
因此,在此之后,您将拥有一个具有查询参数的对象

3) 现在,从该对象获取蒸汽ID所需的一切:

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} 

您是否尝试使用Steam API?其他人正在成功地使用这些库(至少我希望如此!)。请发布一些您尝试过的代码,这些代码无法与您收到的任何错误消息一起使用。已经有一段时间了,但是您是否成功地实现了这一点?我还尝试登录到一个使用Steam OpenID的网站。问候语!我想知道你是否正确理解我的问题,因为我认为我写的完全错了。我不想要一个网站,有一个功能“像”csgolounge,这是蒸汽登录。我希望我的节点应用程序登录到使用steam auth的网站csgolounge。我不确定您是否正确理解我,因为我以前使用过steam api,但我不知道是否有一种方法可以让我使用openid登录steam并返回csgolounge登录?如果用户修改查询字符串并将声明的id设置为另一个steam id怎么办?我认为我理解不正确,但在任何情况下,如果您修改url,您将收到不同的响应。如果我没听懂,请把你的问题写得更详细些
 http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={apiKey}&steamids=${userId}