From 07c31dc14aebcffc2037942d115f121603b2850a Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Tue, 20 Nov 2012 18:14:55 -0500 Subject: [PATCH] Fix auth cycle --- index.html | 5 +++-- js/iD/OAuth.js | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 2839653b4..86c2db050 100644 --- a/index.html +++ b/index.html @@ -92,8 +92,9 @@ } d3.selectAll('button#save').on('click', function() { - oauth.authenticate(); - map.commit(); + oauth.authenticate(function() { + map.commit(); + }); }); d3.selectAll('button#place').on('click', function() { diff --git a/js/iD/OAuth.js b/js/iD/OAuth.js index cb68e6405..c6b1218db 100644 --- a/js/iD/OAuth.js +++ b/js/iD/OAuth.js @@ -1,14 +1,18 @@ iD.OAuth = function(map) { var baseurl = 'http://api06.dev.openstreetmap.org', + apibase = 'http://api06.dev.openstreetmap.org/api/0.6', oauth_secret = 'aMnOOCwExO2XYtRVWJ1bI9QOdqh1cay2UgpbhA6p', oauth = {}; var o = { oauth_consumer_key: 'zwQZFivccHkLs3a8Rq5CoS412fE5aPCXDw9DZj7R', - oauth_token: localStorage.oauth_token || '', oauth_signature_method: 'HMAC-SHA1' }; + if (localStorage.oauth_token) { + o.oauth_token = localStorage.oauth_token; + } + function timenonce(o) { o.oauth_timestamp = ohauth.timestamp(); o.oauth_nonce = ohauth.nonce(); @@ -21,8 +25,11 @@ iD.OAuth = function(map) { }; oauth.xhr = function(options, callback) { + if (localStorage.oauth_token) { + o.oauth_token = localStorage.oauth_token; + } o = timenonce(o); - var url = baseurl + options.path; + var url = apibase + options.path; var oauth_token_secret = localStorage.oauth_token_secret; o.oauth_signature = ohauth.signature(oauth_secret, oauth_token_secret, ohauth.baseString(options.method, url, o)); @@ -32,9 +39,10 @@ iD.OAuth = function(map) { }); }; - oauth.authenticate = function() { + oauth.authenticate = function(callback) { // TODO: deal with changing the api endpoint - if (oauth.authenticated()) return; + if (oauth.authenticated()) return callback(); + var d = document.body.appendChild(document.createElement('div')), ifr = d.appendChild(document.createElement('iframe')); d.className = 'modal'; @@ -71,13 +79,14 @@ iD.OAuth = function(map) { var access_token = ohauth.stringQs(xhr.response); localStorage.oauth_token = access_token.oauth_token; localStorage.oauth_token_secret = access_token.oauth_token_secret; + callback(); }); } }; }; oauth.setAPI = function(x) { - baseurl = x; + apibase = x; return oauth; };