Hey Matt, try the code below. It works reliably for me.
Make sure you've included:
http://oauth.googlecode.com/svn/code/javascript/oauth.js
http://oauth.googlecode.com/svn/code/javascript/sha1.js
<script type="text/javascript">
var requestUrl = 'http://...';
var ck = '...';
var cks = '...';
var accessor = {consumerSecret: cks};
var message = {
method: "GET",
action: requestUrl,
parameters: [
['oauth_signature_method', 'HMAC-SHA1'],
['oauth_consumer_key', ck],
['oauth_version', '1.0'],
['xoauth_requestor_id', guid],
['format', 'json']
]
};
OAuth.setTimestampAndNonce(message);
OAuth.setParameter(message, "oauth_timestamp", OAuth.timestamp
());
OAuth.SignatureMethod.sign(message, accessor);
var finalUrl = OAuth.addToURL(message.action,
message.parameters);
</script>
On Jun 17, 8:28 am, Matt Raible <[email protected]> wrote:
> Hello,
>
> I'm trying to use the JavaScript API to authenticate with OAuth from a
> GWT application. I've got it working with both Google and Twitter's
> OAuth implementations. However, it seems to fail to sign the URL at
> random. In other words, it works 1 out of 3 times.
>
> I'm using the following makeSignedRequest() function to create the
> signed URL.
>
> Fromhttp://paul.donnelly.org/2008/10/31/2-legged-oauth-javascript-functio...
>
> <script type="text/javascript">
> var makeSignedRequest = function(ck, cks, ts, encodedurl) {
> var accessor = { consumerSecret: cks, tokenSecret: ts};
> var message = { action: encodedurl, method: "GET",
> parameters: [
> ["oauth_version","1.0"],
> ["oauth_consumer_key",ck]
> ]};
>
> OAuth.setTimestampAndNonce(message);
> OAuth.SignatureMethod.sign(message, accessor);
>
> var parameterMap = OAuth.getParameterMap(message);
> var baseStr = OAuth.decodeForm
> (OAuth.SignatureMethod.getBaseString(message));
> var theSig = "";
>
> if (parameterMap.parameters) {
> for (var item in parameterMap.parameters) {
> for (var subitem in parameterMap.parameters[item])
> {
> if (parameterMap.parameters[item][subitem] ==
> "oauth_signature") {
> theSig = parameterMap.parameters[item][1];
> break;
> }
> }
> }
> }
>
> var paramList = baseStr[2][0].split("&");
> paramList.push("oauth_signature=" + theSig);
> paramList.sort(function(a, b) {
> if (a[0] < b[0]) return -1;
> if (a[0] > b[0]) return 1;
> if (a[1] < b[1]) return -1;
> if (a[1] > b[1]) return 1;
> return 0;
> });
>
> var locString = "";
> for (var x in paramList) {
> locString += paramList[x] + "&";
> }
>
> return baseStr[1][0] + "?" + locString.slice(0,
> locString.length - 1);
> };
>
> </script>
>
> Any idea why this could be happening?
>
> Thanks,
>
> Matt
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"OAuth" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/oauth?hl=en
-~----------~----~----~----~------~----~------~--~---