撇开我的神枪手身份不谈,我一直感到惊讶沮丧,因为微软从未为有关用户、他们玩的游戏以及游戏中的统计数据的大量信息提供 API。也就是说,我想公开羞辱我用我的狙击步枪洗礼的每一个 n00b。我最近在 XboxLeaders.com 上发现了一个很棒的游戏玩家 API。虽然他们的 API 无法告诉我我在《黑色行动 II》中获得的头衔和徽章,但我可以获得一些关于我的用户、我的状态以及我最近玩过的游戏的相关信息。
Xbox API
XboxLeaders 目前在四个 API 端点提供三种格式(XML、JSON 和序列化 PHP)的数据,以从以下位置检索信息:
GET profile/:gamertag– 返回与 Xbox LIVE 上所请求玩家的个人资料相关的数据。GET games/:gamertag– 返回与请求的玩家玩过的游戏有关的数据。返回除成就外的所有游戏数据。GET achievements/:gamertag/:gameid– 返回请求的玩家和游戏的所有成就数据。-
GET friends/:gamertag– 返回所请求玩家的所有好友数据。如果好友列表是私有的,将会出错。
这些端点允许开发人员访问所有可用的重要游戏玩家特定数据。 XboxLeaders 还在研究用于发送消息的 POST 实现。此 API 可能需要授权,但该 API 目前对任何想使用它的人开放。
调用配置文件 API 将返回以下信息:
{
"Data": {
"Tier": "gold",
"IsValid": 1,
"IsCheater": 0,
"IsOnline": 1,
"OnlineStatus": "Online playing COD: Black Ops II - Search & Destroy\r\non Overflow",
"XBLLaunchTeam": 0,
"NXELaunchTeam": 0,
"KinectLaunchTeam": 0,
"AvatarTile": "https://avatar-ssl.xboxlive.com/global/t.fffe07d1/tile/0/2000b",
"AvatarSmall": "http://avatar.xboxlive.com/avatar/dwalsh83/avatarpic-s.png",
"AvatarLarge": "http://avatar.xboxlive.com/avatar/dwalsh83/avatarpic-l.png",
"AvatarBody": "http://avatar.xboxlive.com/avatar/dwalsh83/avatar-body.png",
"Gamertag": "dwalsh83",
"GamerScore": 310,
"Reputation": 20,
"Name": "David Walsh",
"Motto": "Watch your head.",
"Location": "Madison, WI, US",
"Bio": "There is, and only can be, Call of Duty."
},
"Stat": "ok",
"In": 2.504,
"Authed": "false",
"AuthedAs": null
}
处理的数据量很大。其他 API 调用将返回类似的相关信息。
使用 Xbox Gamer API
那么可以使用这个 Xbox Gamer API 创建什么?这取决于你的想象力!让我使用这个很棒的 API 来创建玩家卡!
<?php
// Vars
$gamertag = 'dwalsh83';
/*
Would be better to use cURL, but for briefness of code, using file_get_contents
*/
// Get profile information
$profile = json_decode(file_get_contents('http://www.xboxleaders.com/api/profile.json?gamertag='.$gamertag));
$profile = $profile->Data;
// Get game information
$games = json_decode(file_get_contents('http://www.xboxleaders.com/api/games.json?gamertag='.$gamertag));
$games = $games->Data;
?>
<!DOCTYPE html>
<html>
<head>
<style>
.gamercard {
border: 1px solid #bdbec1;
padding: 10px;
width: 600px;
font-family: arial, sans-serif;
font-size: 12px;
color: #bdbec1;
background-image: -webkit-linear-gradient(#ddd, #fff, #e9fdce);
background-image: -moz-linear-gradient(top, #ddd, #fff, #e9fdce);
background-image: -ms-linear-gradient(#ddd, #fff, #e9fdce);
background-image: -o-linear-gradient(#ddd, #fff, #e9fdce);
background-image: linear-gradient(#ddd, #fff, #e9fdce);
}
.gamercard img {
display: block;
}
.gamercard .avatar {
float: right;
width: 150px;
height: 300px;
margin: -60px 0 0 50px;
}
.gamercard h1 {
font-weight: normal;
color: #78BB58;
}
.gamercard h1 img {
display: inline-block;
padding-right: 10px;
width: 24px;
height: 24px;
}
.gamercard h2 {
color: #111;
font-size: 16px;
font-weight: normal;
margin-top: 15px;
}
.gamercard ul {
list-style-type: none;
}
.gamercard ul li {
padding-top: 8px;
}
.gamercard ul li strong {
color: #666;
}
.gamercard ul.games li {
display: inline-block;
margin-right: 20px;
text-align: center;
font-weight: bold;
width: 85px;
vertical-align: top;
}
.gamercard ul.games li img {
margin: 0 auto;
width: 85px;
}
.gamercard a {
color: #78bb58;
}
.gamercard .clear {
clear: both;
}
</style>
</head>
<body>
<!-- gamercard -->
<div >
<!-- profile image -->
<img src="<?php echo $profile->AvatarBody; ?>" alt="<?php echo $profile->Gamertag; ?>" />
<!-- gamer name -->
<h1><img src="<?php echo $profile->AvatarTile; ?>" alt="<?php echo $profile->Gamertag; ?>" /><?php echo $profile->Gamertag; ?></h1>
<!-- personal info -->
<h2>The Legend</h2>
<ul>
<li><strong>Name:</strong> <?php echo $profile->Name; ?></li>
<li><strong>Bio:</strong> <?php echo $profile->Bio; ?></li>
<li><strong>Location:</strong> <?php echo $profile->Location; ?></li>
<li><strong>Motto:</strong> <?php echo $profile->Motto; ?></li>
<li><strong>Online:</strong> <?php echo $profile->IsOnline ? 'Online' : 'Offline'; ?></li>
<li><strong>Status:</strong> <?php echo $profile->IsOnline ? $profile->OnlineStatus : '(none)'; ?></li>
</ul>
<?php if(count($games->PlayedGames)): ?>
<!-- recent games -->
<h2>Recent Games</h2>
<ul >
<?php foreach($games->PlayedGames as $game): ?>
<li><a href="<?php echo $game->Url; ?>"><img src="<?php echo $game->BoxArt; ?>" alt="<?php echo $game->Title; ?>" /></a><br /><?php echo $game->Title; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<div ></div>
</div>
</body>
</html>
这是一张简单的玩家卡片。一个很棒的附加功能是一个横向滚动的游戏列表,当你点击每个游戏时可能会显示成就。无论如何,XboxLeaders 的 API 将为您提供所需的信息。
XboxLeaders 增强的 Xbox Gamer API 易于使用、可靠且独特。该 API 填补了 Microsoft 因不提供公共 Xbox API 而造成的空白,并且做得非常好。与往常一样,尽最大努力缓存请求,以保持低服务器负载和快速访问您的站点。如果您使用此 API 创建了一些东西,请告诉我 – 我很乐意看到它!
