检索 Steam 帐户的 OpenID 数据,返回 null?

发布于 2024-12-08 03:57:21 字数 1435 浏览 0 评论 0原文

我正在使用 Light-OpenID for PHP 来验证和检索数据。

对于我的 OpenID 提供商 URL,我使用 http://steamcommunity.com/openid/,如文档所述 此处-

Steam OpenID 提供商 Steam 可以充当 OpenID 提供商。这允许 您的应用程序无需验证用户的 SteamID 他们在您的网站上输入他们的 Steam 用户名或密码( 将违反 API 使用条款。)只需下载 OpenID 适合您选择和使用的语言和平台的库 http://steamcommunity.com/openid 作为提供商。退回的索赔 ID 将包含用户的 64 位 SteamID。声明的 ID 格式为: http://steamcommunity.com/openid/id/

我已指定所需的数据数组我这样要求 -

$openid->required = array(
                        'namePerson',
                        'namePerson/first',
                        'namePerson/last',
                        'namePerson/friendly',
                        'contact/email',
                        'email');

我已经确保我的代码有效,并与其他提供商(例如 Google 和 Yahoo)进行了测试。

我尝试使用 Steam 登录,并已通过身份验证,但当我想使用 $openid->getAttributes(); 检索有关用户的数据时,数组返回空。

我进行了更多调查,看来 Steam 还通过其 使用 GetPlayerSummaries 的 Web API 提供数据。我想我可以使用 OpenID 帐户授权中的 64BIT Steam ID 来请求数据,但这需要 API 密钥,并在 PHP 中解析数据。

有没有办法使用 OpenID 请求这些数据?或者我必须通过 Steam 的 API 手动解析所有内容?

I'm using Light-OpenID for PHP to authenticate and retrieve data.

For my OpenID provider URL I am using http://steamcommunity.com/openid/, as documented here-

Steam OpenID Provider Steam can act as an OpenID provider. This allows
your application to authenticate a user's SteamID without requiring
them to enter their Steam username or password on your site (which
would be a violation of the API Terms of Use.) Just download an OpenID
library for your language and platform of choice and use
http://steamcommunity.com/openid as the provider. The returned Claimed
ID will contain the user's 64-bit SteamID. The Claimed ID format is:
http://steamcommunity.com/openid/id/

I have specified my required array of data that I am requesting as such -

$openid->required = array(
                        'namePerson',
                        'namePerson/first',
                        'namePerson/last',
                        'namePerson/friendly',
                        'contact/email',
                        'email');

I have made sure my code works, have tested it with other providers such as Google and Yahoo.

I try to login using Steam, I am authenticated, yet when I want to retrieve data about the user using $openid->getAttributes(); the array returns empty.

I have investigated more, and it appears Steam also serves data through its Web API using GetPlayerSummaries. I suppose I could use the 64BIT Steam ID from the authorization of the OpenID account to request the data, but this would require an API key, and parsing the data in PHP.

Is there a way to request this data using OpenID? Or do I have to manually parse everything through Steam's API?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深空失忆 2024-12-15 03:57:21

Steam 可以充当 OpenID 提供商。这允许您的应用程序验证用户的 SteamID,而不要求他们在您的网站上输入其 Steam 用户名或密码(这将违反 API 使用条款。)

这回答了您的部分问题吗?
他们仅使用 openId 进行身份验证 - 仅此而已。在其他部分的回答中,我应该说 - 是的,您应该从 steam 获取服务密钥并使用 GetPlayerSummaries 方法来获取您想要的内容。解析不会有问题,因为它们支持多种返回格式(我会使用 JSON)。

Steam can act as an OpenID provider. This allows your application to authenticate a user's SteamID without requiring them to enter their Steam username or password on your site (which would be a violation of the API Terms of Use.)

This answers a part of your question?
They use openId only for authentication - nothing more. In answer on other part i should say - yes you should obtain service key from steam and use GetPlayerSummaries method to get what you want. The parsing will be not problem because they support much formats for return (i would use JSON).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文