撇开我的神枪手身份不谈,我一直感到惊讶沮丧,因为微软从未为有关用户、他们玩的游戏以及游戏中的统计数据的大量信息提供 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 创建了一些东西,请告诉我 – 我很乐意看到它!