Skip to content

Instantly share code, notes, and snippets.

@fanzeyi
Created March 31, 2012 09:33
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fanzeyi/2261279 to your computer and use it in GitHub Desktop.
Save fanzeyi/2261279 to your computer and use it in GitHub Desktop.
Fanfou OAuth in Javascript
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>callback</title>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/sha1.lib.js"></script>
<script type="text/javascript" src="/js/oauth.lib.js"></script>
<script type="text/javascript" src="/js/fanfou.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
var token = {
oauth_token : window.localStorage.getItem("oauthToken"),
oauth_token_secret : window.localStorage.getItem("oauthTokenSecret")
}
window.localStorage.removeItem("oauthToken");
window.localStorage.removeItem("oauthTokenSecret");
FF.get_access_token(token, function(e) {
window.localStorage.setItem("oauth_token", e.oauth_token);
window.localStorage.setItem("oauth_token_secret", e.oauth_token_secret);
window.location.href = "/index.html";
});
});
</script>
</body>
</html>
var FF = {
key : {
consumerKey : '',
consumerSecret : '',
serviceProvider : {
signatureMethod : 'HMAC-SHA1',
requestTokenURL : 'http://fanfou.com/oauth/request_token',
AuthorizationURL : 'http://fanfou.com/oauth/authorize',
accessTokenURL : 'http://fanfou.com/oauth/access_token'
}
},
_oauth_request_parameters : function(url, message, accessor, callback) {
var result;
OAuth.setTimestampAndNonce(message);
OAuth.SignatureMethod.sign(message, accessor);
console.log(message);
$.ajax({
url : url,
type : message.method,
data : OAuth.getParameterMap(message.parameters),
success : function(e) {
result = OAuth.getParameterMap(e);
if(callback) {
callback(result);
}
}});
return result;
},
get_request_token : function(callback) {
var message = {
action : this.key.serviceProvider.requestTokenURL,
method : "GET",
parameters : [
["oauth_consumer_key", this.key.consumerKey],
["oauth_signature_method", this.key.serviceProvider.SignatureMethod]
]
};
var accessor = {
consumerSecret : this.key.consumerSecret,
tokenSecret : ""
}
return this._oauth_request_parameters(message.action, message, accessor, callback);
},
get_access_token : function(requestToken, callback) {
var message = {
action : this.key.serviceProvider.accessTokenURL,
method : "GET",
parameters : [
["oauth_consumer_key", this.key.consumerKey],
["oauth_token", requestToken.oauth_token],
["oauth_signature_method", this.key.serviceProvider.SignatureMethod]
]
};
var accessor = {
consumerSecret : this.key.consumerSecret,
tokenSecret : requestToken.oauth_token_secret,
}
return this._oauth_request_parameters(message.action, message, accessor, callback);
},
get_authorize_url : function(requestToken, callbackURL) {
return this.key.serviceProvider.AuthorizationURL + "?oauth_token=" + requestToken.oauth_token + "&oauth_callback=" + callbackURL;
},
fanfou_request : function(path, method, access_token, args, callback) {
var message = {
action : this.key.serviceProvider.baseAPIURL + path + ".json",
method : method,
parameters : [
["oauth_consumer_key", this.key.consumerKey],
["oauth_token", access_token.oauth_token],
["oauth_signature_method", this.key.serviceProvider.SignatureMethod]
]
};
var accessor = {
consumerSecret : this.key.consumerSecret,
tokenSecret : access_token.oauth_token_secret,
}
for (key in args) {
message.parameters.push([key, args[key]]);
}
return this._oauth_request_parameters(message.action, message, accessor, callback);
}
}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>OAuth</title>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/sha1.lib.js"></script>
<script type="text/javascript" src="/js/oauth.lib.js"></script>
<script type="text/javascript" src="/js/fanfou.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
FF.get_request_token(function(requestToken) {
var url = FF.get_authorize_url(requestToken, "chrome-extension://" + document.domain + "/callback.html");
window.localStorage.setItem("oauthToken", requestToken.oauth_token);
window.localStorage.setItem("oauthTokenSecret", requestToken.oauth_token_secret);
window.location.href = url;
});
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>Test</title>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript" src="/js/sha1.lib.js"></script>
<script type="text/javascript" src="/js/oauth.lib.js"></script>
<script type="text/javascript" src="/js/fanfou.js"></script>
</head>
<body>
<a id="sendStatus" href="###">Send a status</a>
<script type="text/javascript">
$(document).ready(function() {
var access_token = {
oauth_token : window.localStorage.getItem("oauth_token"),
oauth_token_secret : window.localStorage.getItem("oauth_token_secret")
}
$('#sendStatus').click(function() {
FF.fanfou_request("/statuses/update", "POST", access_token, {'status' : 'Hello 饭否'}, function(e) {
console.log(e);
});
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment