Skip to content

Instantly share code, notes, and snippets.

@dangerouse
Created October 7, 2019 19:32
Show Gist options
  • Save dangerouse/5524fa936adbb93fe14f2cd5e810213a to your computer and use it in GitHub Desktop.
Save dangerouse/5524fa936adbb93fe14f2cd5e810213a to your computer and use it in GitHub Desktop.
CloudSponge Proxy URL for Instapage
<p>Thank you for completing the OAuth flow.</p>
<p>Click <a class="cs-force">here to verify that your Proxy URL is set up correctly</a>.</p>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>OAuth Proxy Page</title>
<!-- Including the CloudSponge proxy script here to redirect to the CloudSponge server -->
<script>
// This auth-proxy.js can be placed on any HTML page to turn it into a
// CloudSponge Proxy URL.
// It pulls the proper OAuth parameters out and sends them to CloudSponge
// to complete the next stage in the contact import.
window.cloudspongeProxy = (function() {
var proxyHost = 'https://api.cloudsponge.com/auth';
var isOAuthPage, queryParams, oauthParams, key;
var redirecting = false;
function appendSearch() {
var search = window.location.search;
if (search && search[0] == '?') {
search = search + "&"
} else {
search = search + '?'
}
search = search + "state=_csAuth%3D1%26import_id%3Dproxy-test";
return search;
}
// serializes an object into a query-string
var serializeParams = function(params) {
var k, results = [];
for (k in params) {
results.push(k + "=" + encodeURIComponent(params[k]));
}
return results.join('&');
}
// converts the URL string into an object
var parseParams = function(url) {
var obj = {};
url.replace(/([^?=&]+)(=([^&]*))?/g, function($0, $1, $2, $3) {
return obj[$1] = decodeURIComponent($3);
});
return obj;
}
// parse the query string
var queryParams = parseParams(window.location.search);
// selects just the OAuth-related params out of the query
oauthParams = {};
for (key in queryParams) {
if (key === 'code' || key === 'state' || key === 'error' || key === 'error_code' || key === 'forward') {
oauthParams[key] = queryParams[key];
}
}
// checks to see if this page actually the necessary received OAuth params
// and then flings the state and code up to CloudSponge to do the heavy lifting work
if (oauthParams.state && (oauthParams.code || oauthParams.error || oauthParams.error_code)) {
redirecting = true;
window.location = proxyHost + '?' + serializeParams(oauthParams);
}
// add the redirect endpoint to any .cs-proxy links on the page
window.addEventListener('load', function(){
var i;
var links = document.getElementsByClassName('cs-force');
for (i = 0; i < links.length; i++) {
links[i].href = proxyHost + appendSearch();
}
}, false)
return {
redirecting: redirecting,
force: function(){
window.location = proxyHost + appendSearch();
return false;
}
};
})();
</script>
@dangerouse
Copy link
Author

Here is the Proxy URL content, split for setting up with Instapage. Hopefully, this helps to reduce any errors when copying and pasting the code snippets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment