Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
A simple example of PIN-based oauth flow with Twitter and jsOAuth
<!DOCTYPE html>
<html>
<head>
<!--
A simple example of PIN-based oauth flow with Twitter and jsOAuth.
This is mostly based on/copied from <http://log.coffeesounds.com/oauth-and-pin-based-authorization-in-javascri>.
Get jsOAuth at <https://github.com/bytespider/jsOAuth/downloads>
-->
<meta charset="utf-8">
<title>jsOauth test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="jsOAuth-1.1.js"></script>
<style type="text/css" media="screen">
</style>
<script>
$(document).ready(function() {
var options = {
consumerKey: 'YOUR_CONSUMER_KEY',
consumerSecret: 'YOUR_CONSUMER_SECRET'
};
var requestParams;
var accessParams;
var oauth = OAuth(options);
oauth.get('https://twitter.com/oauth/request_token',
function(data) {
console.dir(data);
window.open('https://twitter.com/oauth/authorize?'+data.text);
requestParams = data.text
},
function(data) { alert('darn'); console.dir(data) }
);
$('#pinbutton').click(function() {
if ($('#pin').val()) {
oauth.get('https://twitter.com/oauth/access_token?oauth_verifier='+$('#pin').val()+'&'+requestParams,
function(data) {
console.dir(data);
// split the query string as needed
var accessParams = {};
var qvars_tmp = data.text.split('&');
for (var i = 0; i < qvars_tmp.length; i++) {;
var y = qvars_tmp[i].split('=');
accessParams[y[0]] = decodeURIComponent(y[1]);
};
oauth.setAccessToken([accessParams.oauth_token, accessParams.oauth_token_secret]);
getHomeTimeline();
},
function(data) { alert('poop'); console.dir(data); }
);
}
});
function getHomeTimeline() {
oauth.get('https://api.twitter.com/1/statuses/home_timeline.json',
function(data) {
entries = JSON.parse(data.text);
var html = [];
for (var i = 0; i < entries.length; i++) {
html.push(JSON.stringify(entries[i]));
};
$('#timeline').html(html.join('<hr>'));
},
function(data) { alert('lame'); console.dir(data); }
);
}
});
</script>
</head>
<body>
<h1>jsOauth test</h1>
When you get a PIN, enter it here.
<input id="pin" type="text" value=""><button id='pinbutton'>Save</button>
<div id="timeline">
</div>
</body>
</html>
@rxgx

This comment has been minimized.

Show comment Hide comment
@rxgx

rxgx May 20, 2011

This won't work with a normal AJAX call (because of Access-Control-Allow-Origin) and requires JSONP.

rxgx commented May 20, 2011

This won't work with a normal AJAX call (because of Access-Control-Allow-Origin) and requires JSONP.

@funkatron

This comment has been minimized.

Show comment Hide comment
@funkatron

funkatron May 20, 2011

Yes, this will only work in platforms not bound by same-origin, such as Titanium Desktop, Adobe AIR and webOS.

Owner

funkatron commented May 20, 2011

Yes, this will only work in platforms not bound by same-origin, such as Titanium Desktop, Adobe AIR and webOS.

@Ridermansb

This comment has been minimized.

Show comment Hide comment
@Ridermansb

Ridermansb Jan 2, 2012

How would the implementation using JSONP?

How would the implementation using JSONP?

@funkatron

This comment has been minimized.

Show comment Hide comment
@funkatron

funkatron Jan 3, 2012

pretty sure Twitter oAuth does not support JSONP responses. YMMV.

Owner

funkatron commented Jan 3, 2012

pretty sure Twitter oAuth does not support JSONP responses. YMMV.

@Ridermansb

This comment has been minimized.

Show comment Hide comment
@Ridermansb

Ridermansb Jan 3, 2012

Some examples using no-PIN mode ?

I read this article but it seemed very confusing.

Some examples using no-PIN mode ?

I read this article but it seemed very confusing.

@funkatron

This comment has been minimized.

Show comment Hide comment
@funkatron

funkatron Jan 3, 2012

Sorry, I'd have to suggest looking at the Twitter docs – I don't have time to write up more examples for you.

Owner

funkatron commented Jan 3, 2012

Sorry, I'd have to suggest looking at the Twitter docs – I don't have time to write up more examples for you.

@Ridermansb

This comment has been minimized.

Show comment Hide comment
@Ridermansb

Ridermansb Jan 3, 2012

No problem, I search the Twitter docs.
Anyway, thanks for the help.

No problem, I search the Twitter docs.
Anyway, thanks for the help.

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