Created
March 31, 2012 09:33
-
-
Save fanzeyi/2261279 to your computer and use it in GitHub Desktop.
Fanfou OAuth in Javascript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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