tl;dr:Steam 不是 OpenID Connect提供商
我遇到了完全相同的问题。
我尝试在禁用 CORS 的情况下运行 chrome 以查看它是否可以工作,我从 oidc-client 收到错误消息:
SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at XMLHttpRequest.s.onload (oidc-client.min.js?3809:1)
这很容易理解,因为https://steamcommunity.com/openid/.well-known/openid-configuration看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://steamcommunity.com/openid/login</URI>
</Service>
</XRD>
</xrds:XRDS>
这显然不是 JSON。
Type balise 中的 URL 重定向到http://openid.net/specs/openid-authentication-2_0.html,可以在OpenID 规范页面的过时部分找到。
此外,您可以在OpenID Connect Discovery 规范页面中找到
支持发现的 OpenID 提供者必须在通过将字符串 /.well-known/openid-configuration 连接到颁发者形成的路径上提供 JSON 文档。
这证实了 Steam OpenID 端点的 .wellknown/openid-configuration 文件不是为 OpenID Connect制作的。
所以我认为可以肯定地说 Steam 坚持使用 OpenID 2.0,而不是 OpenID Connect 提供商。
现在我必须寻找一个 OpenID 2.0 js 客户端,或者切换到 Google Sign-In。