I have developed a fairly decent way of getting my gamertag on my website side bar without using Iframes. It uses an API that was developed by Duncan Mackenzie. I just take the data and place it on my SideBar.ascx for BlogEngine. This script will work pretty much anywhere though.
private void XmlDownload()
{
try
{
string url = "http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=jwendl";
DataSet gamerDataSet = (DataSet)Cache["jwendl-gamercard"];
if (gamerDataSet == null)
{
gamerDataSet = new DataSet();
XmlTextReader xml = new XmlTextReader(url);
gamerDataSet.ReadXml(xml);
}
Cache["jwendl-gamercard"] = gamerDataSet;
DataTable xboxInfo = gamerDataSet.Tables["XboxInfo"];
DataTable presenceInfo = gamerDataSet.Tables["PresenceInfo"];
DataTable recentGameInfo = gamerDataSet.Tables["XboxUserGameInfo"];
DataTable recentGame = gamerDataSet.Tables["Game"];
DataTable modRecentGame = new DataTable();
modRecentGame.Columns.Add("DetailsURL");
modRecentGame.Columns.Add("Image32Url");
modRecentGame.Columns.Add("Name");
modRecentGame.Columns.Add("Score");
for (int x = 0; x < recentGameInfo.Rows.Count; x++)
modRecentGame.Rows.Add(new object[] { recentGameInfo.Rows[x]["DetailsURL"], recentGame.Rows[x]["Image32Url"], recentGame.Rows[x]["Name"], recentGameInfo.Rows[x]["GamerScore"] });
gamerName.Text = Convert.ToString(xboxInfo.Rows[0]["Gamertag"]);
gamerName.NavigateUrl = Convert.ToString(xboxInfo.Rows[0]["ProfileUrl"]);
mainTag.ImageUrl = Convert.ToString(xboxInfo.Rows[0]["TileUrl"]);
mainTag.Text = Convert.ToString(xboxInfo.Rows[0]["Gamertag"]);
mainTag.NavigateUrl = Convert.ToString(xboxInfo.Rows[0]["ProfileUrl"]);
gamerScore.Text = Convert.ToString(xboxInfo.Rows[0]["GamerScore"]);
gameLinks.DataSource = modRecentGame.DefaultView;
gameLinks.DataBind();
gamerOnline.Text = Convert.ToString(presenceInfo.Rows[0]["StatusText"]);
gamerSeen.Text = Convert.ToString(presenceInfo.Rows[0]["LastSeen"]);
gamerLocation.Text = Convert.ToString(presenceInfo.Rows[0]["Info"]);
gamerLocation.Text += Convert.ToString(presenceInfo.Rows[0]["Info2"]);
}
catch (Exception ex)
{
gamerTag.Visible = false;
string foobar = ex.ToString();
}
}
<div class="box">
<h1>Xbox Gamer Card</h1>
<asp:Table ID="gamerTag" runat="server">
<asp:TableRow>
<asp:TableCell RowSpan="2" VerticalAlign="top"><b><asp:HyperLink ID="gamerName" Target="_new" runat="server" /></b><br /><asp:HyperLink ID="mainTag" runat="server" /></asp:TableCell>
<asp:TableCell><b>Gamer Score: </b><asp:Literal ID="gamerScore" runat="server" /></asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Repeater ID="gameLinks" runat="server">
<ItemTemplate>
<asp:HyperLink ID="GameImage" Target="_new" NavigateUrl='<%# Eval("DetailsURL") %>' ImageUrl='<%# Eval("Image32Url") %>' Text='<%# Eval("Name") + " (" + Eval("Score") + ")" %>' runat="server" />
</ItemTemplate>
</asp:Repeater>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell ColumnSpan="2"><asp:Label ID="gamerOnline" runat="server" /><br /><asp:Label ID="gamerSeen" runat="server" /><br /><asp:Label ID="gamerLocation" runat="server" /></asp:TableCell>
</asp:TableRow>
</asp:Table>
</div>
You can see an example in my side bar. I would release source code for it, but there is no reason for it. I will only do it if there is a lot of interest, then it might be worth making it pretty.