gpt4 book ai didi

openid - Steam API 认证

转载 作者:行者123 更新时间:2023-12-03 12:07:49 80 4
gpt4 key购买 nike

在开始之前,让我说我对 OpenID 一无所知。我什至不想做 OpenID 的用途,但我想人们会提到它,但这不是我想要的。

我有软件。该软件要求用户在注册时提供他们的 Steam 用户名。他们不是通过 Steam 登录,只是提供他们的用户名,以便其他人知道他们的 Steam 用户名。所以不需要 OpenID。

我知道,我可以简单地添加一个文本字段,让他们列出他们的 Steam 用户名并收工。然而,这样做,人们几乎可以输入他们想要的任何 Steam 用户名并完成。我希望能够确认他们的用户名。

理想情况下,会有一个“验证 Steam 帐户”按钮。人们点击它,它会弹出一个 Steam 登录表单。人们登录,然后 Steam 返回他们的用户名(可能还有一些额外的数据,比如他们的头像)。什么是最好的方法来做到这一点?

最佳答案

需要 OpenID。这是 Valve 根据他们的 documentation 使用的方法.

你没有提到你的应用程序是用什么编写的,所以我只能猜测你是通过网页来做这件事的。在这种情况下,我建议使用 LightOpenID图书馆。从那里开始,此示例代码应该能够帮助您入门。

<?php
require 'includes/lightopenid/openid.php';
$_STEAMAPI = "YOURSTEAMAPIKEY";
try
{
$openid = new LightOpenID('http://URL.TO.REDIRECT.TO.AFTER.LOGIN/');
if(!$openid->mode)
{
if(isset($_GET['login']))
{
$openid->identity = 'http://steamcommunity.com/openid/?l=english'; // This is forcing english because it has a weird habit of selecting a random language otherwise
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<input type="image" src="http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png">
</form>
<?php
}
elseif($openid->mode == 'cancel')
{
echo 'User has canceled authentication!';
}
else
{
if($openid->validate())
{
$id = $openid->identity;
// identity is something like: http://steamcommunity.com/openid/id/76561197960435530
// we only care about the unique account ID at the end of the URL.
$ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
preg_match($ptn, $id, $matches);
echo "User is logged in (steamID: $matches[1])\n";

$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=$_STEAMAPI&steamids=$matches[1]";
$json_object= file_get_contents($url);
$json_decoded = json_decode($json_object);

foreach ($json_decoded->response->players as $player)
{
echo "
<br/>Player ID: $player->steamid
<br/>Player Name: $player->personaname
<br/>Profile URL: $player->profileurl
<br/>SmallAvatar: <img src='$player->avatar'/>
<br/>MediumAvatar: <img src='$player->avatarmedium'/>
<br/>LargeAvatar: <img src='$player->avatarfull'/>
";
}

}
else
{
echo "User is not logged in.\n";
}
}
}
catch(ErrorException $e)
{
echo $e->getMessage();
}
?>

使用它,它将向用户显示一个 Steam 登录 ID 按钮。当它被点击时,它会将用户重定向到 Steam 社区登录页面。他们登录后,用户将重定向回您在 LightOpenID 上设置的页面。构造函数。如果用户已通过验证,它将从返回的值中提取唯一的玩家 ID。该返回值看起来像 http://steamcommunity.com/openid/id/76561197960435530 ,而您只需要 76561197960435530部分。

此时您可以查询 Steam 以获取玩家信息。在提供的示例中,查询用户并显示基本玩家信息。

关于openid - Steam API 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674042/

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