I'm trying to create an Office365 webpart that displays a 5 day weather forecast. The sandbox restrictions mean that I can't call the data service from the server side code, so I need to make the call client side.
Marketplace data is accessible as JSON, so using jQuery and a cryptography library called crypto.js to handle the authentication I should be able to return some data.
Here is a simple htm page that demonstrates a working call to the Azure Marketplace, the username can be anything but the password should be your Primary Account Key from the data subscription.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Windows Azure Data Market</title>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="http://crypto-js.googlecode.com/files/2.5.3-crypto-min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
var user = "{username}";
var pwd = "{primary account key}";
$.support.cors = true;
$.ajax({
type: "GET",
beforeSend: function (xhr) {
var bytes = Crypto.charenc.Binary.stringToBytes(user + ":" + pwd);
var base64 = Crypto.util.bytesToBase64(bytes);
xhr.setRequestHeader("Authorization", "Basic " + base64);
},
url: "https://api.datamarket.azure.com/DataGovUK/MetOfficeWeatherOpenData/Site?$top=100&$format=json",
dataType: "json",
success: function (data) {
alert('success!');
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown.message);
}
});
})
</script>
</head>
<body>
</body>
</html>
3 comments:
Excellent post!. do you know if is the same way to work with storage account?
Thanks.
I think the storage account supports the oAuth standard, so I'd recommend you taking a look at that approach. The Marketplace data supports oAuth but accessing it via web/javascript requires user iteraction to get a code, which is no use at all!
You are simple...awesome!!!! :D
This worked effortlessly with Bing Related Search API.
Post a Comment