返回

PHP 中如何使用 Steam Web API 获取当前用户状态?

php

通过 Steam Web API 获取当前用户状态

引言

Steam Web API 为开发者提供了各种强大功能,包括获取 Steam 用户状态的能力。本篇文章将指导你使用 PHP 的 switch 语句,从 Steam Web API 获取指定用户的当前状态,包括在线、离线、忙碌等。

获取用户状态

Steam Web API 提供 personastate 字段,包含一个整数值,表示用户的当前状态。以下为不同状态值的含义:

  • 0 - 离线
  • 1 - 在线
  • 2 - 忙碌
  • 3 - 离开
  • 4 - 暂停
  • 5 - 寻找交易
  • 6 - 寻找玩伴

你可以使用以下 PHP 代码片段获取用户的 personastate 值:

$steamprofile = json_decode(file_get_contents("https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=STEAM_API_KEY&steamids=STEAM_ID"), true);
$status = $steamprofile['personastate'];

替换 STEAM_API_KEY 为你的 Steam Web API 密钥,替换 STEAM_ID 为目标用户的 Steam ID。

使用 switch 语句显示状态

获取 personastate 值后,可以使用 switch 语句根据该值显示用户的当前状态:

switch ($status) {
  case 0:
    echo "离线!";
    break;
  case 1:
    echo "在线!";
    break;
  // ... 其余状态值
  default:
    echo "未知状态";
}

优化代码

为了增强代码的可读性和可维护性,可以对 switch 语句进行优化:

$statusMessages = [
  0 => "离线!",
  1 => "在线!",
  // ... 其余状态值
];

echo $statusMessages[$status] ?? "未知状态";

此优化后的代码使用关联数组将状态值映射到相应的文本消息,并使用 ?? 运算符处理不存在的状态值。

示例

以下代码片段将获取名为 "ExampleUser" 的 Steam 用户的当前状态并将其显示在页面上:

$steamprofile = json_decode(file_get_contents("https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=STEAM_API_KEY&steamids=76561197960265728"), true);
$status = $steamprofile['personastate'];

$statusMessages = [
  0 => "离线!",
  1 => "在线!",
  // ... 其余状态值
];

echo $statusMessages[$status] ?? "未知状态";

常见问题解答

问:如何获取我的 Steam API 密钥?
答:访问 Steamworks 开发者仪表板并创建应用程序以获取密钥。

问:为什么我收到 "Unknown state" 错误?
答:确保你传递的 STEAM_ID 是有效的,并且 personastate 值是上面列出的有效值之一。

问:我可以获取除在线状态以外的其他用户数据吗?
答:是的,Steam Web API 提供了各种其他端点,可以让你获取用户头像、朋友列表和其他详细信息。

问:是否可以将此代码用于商业用途?
答:是的,只要遵守 Steamworks 用户协议即可。

问:是否存在其他方法来获取 Steam 用户状态?
答:是的,可以使用 SteamKit 或 Node-Steam 等第三方库来实现。

结论

通过利用 Steam Web API 和 PHP 的 switch 语句,你可以轻松获取 Steam 用户的当前状态。无论是用于网站还是应用程序,此信息都可以为你的项目增加有价值的功能。