Jquery中文网 www.jquerycn.cn
Jquery中文网 >  jQuery  >  jquery 教程  >  正文 [gist]Introduces $.oauth() to make using OAuth from jQuery as easy as using $.aj

[gist]Introduces $.oauth() to make using OAuth from jQuery as easy as using $.aj

发布时间:2016-09-18   编辑:www.jquerycn.cn
jquery中文网为您提供[gist]Introduces $.oauth() to make using OAuth from jQuery as easy as using $.aj等资源,欢迎您收藏本站,我们将为您提供最新的[gist]Introduces $.oauth() to make using OAuth from jQuery as easy as using $.aj资源

from http://oyanglul.us

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
(function (window, document, $, undefined) {
if (!$.Deferred) throw 'jquery 1.5 is required to use the jQuery.oauth script!';
function require(name, url) {
if (window[name] === undefined)
return $.ajax({ type: 'GET', cache: true, dataType: 'script', url: url });
}
console.log("blah")
$.oauth = function (options) {
var d = $.Deferred();
 
$.when(
require('str_sha1', 'http://oauth.googlecode.com/svn/code/javascript/sha1.js'),
require('OAuth', 'http://oauth.googlecode.com/svn/code/javascript/oauth.js')
).then(function () {
$.ajax(addOAuthStuffs(options)).done(d.resolve);
});
 
return $.extend({
success: function () { return this.then.apply(this, arguments); },
complete: function () { return this.done.apply(this, arguments); },
error: function () { return this.fail.apply(this, arguments); }
}, d.promise());
};
 
function addOAuthStuffs(options) {
options = $.extend({ type: 'GET', consumerKey: '', consumerSecret: '', tokenSecret: '', url: '' }, options);
if (options.data) {
if (typeof options.data !== "string")
options.data = $.param(options.data);
}
 
if (options.url.indexOf(':') == -1) {
if (options.url.substr(0, 1) == '/') {
options.url = location.protocol + '//' + location.host + options.url;
} else {
options.url = location.href.substr(0, location.href.lastIndexOf('/') + 1) + options.url;
}
}
 
var message = { action: options.url + (options.data && options.data.length > 0 ? '?' + options.data : ''),
method: options.type, parameters: [["oauth_version", "1.0"], ["oauth_consumer_key", options.consumerKey]]
};
 
OAuth.setTimestampAndNonce(message);
OAuth.SignatureMethod.sign(message, { consumerSecret: options.consumerSecret, tokenSecret: options.tokenSecret });
 
var parameterMap = OAuth.getParameterMap(message);
var baseStr = OAuth.decodeForm(OAuth.SignatureMethod.getBaseString(message));
options.data = baseStr[2][0];
 
if (parameterMap.parameters)
$.each(parameterMap.parameters, function (item, values) {
return $.each(values, function (subitem, value) {
if (value == 'oauth_signature') {
options.data += '&oauth_signature=' + escape(values[1]);
return false;
}
});
});
 
if (options.url.indexOf('?') > -1)
options.url = options.url.substr(0, options.url.indexOf('?'));
 
options.cache = false;
return options;
}
})(window, document, jQuery, location);
view raw
jquery.oauth.js
hosted with ❤ by GitHub

您可能感兴趣的文章:
Base64 functions
jQuery模板技术和数据绑定实现代码
jQuery Multi Level horizontal CSS Menu
jQuery 开发者应该注意的9个错误
SVG Integration
Throbber (aka loading animation)
Table row drag and drop
整理的40个有用的jQuery技术和教程
jQuery SOAP Client
Date Picker

[关闭]