原文來自http://adodson.com/hello.js/#hellojsjavascript
Hello.js是一個客戶端JavaScript SDK,用於OAuth2認證Web服務以及請求它們的REST Api。HelloJS標準化了路徑,並響應常見的API,好比說Google Data Services、Facebook Graph以及Windows Live Connect。它們是模塊,因此這個列表還在增加中。不再須要意大利麪條式的代碼。css
我什麼也不懂,怎麼辦?html
別懼怕,這裏有一個簡單的演示文檔,演示了一個基本的請求:經過一個服務鏈接用戶,它們屬於java
Get
取得我的信息Get
列出個人好友Get
列出個人聯繫人Get
列出fo個人人Get
列出我fo的人Get
列出我最近的狀態消息Post
發佈一條狀態消息Post
發佈一條狀態消息並上傳一個媒體文件Post
分享一條已有的消息Get
取得一個我點「贊」、點「妙」、加「星」過的內容列表Post
對一些內容點「贊」,點「妙」、加「星」Delete
對一些內容棄「贊」、棄「妙」、去「星」Get
列出個人相冊Get
列出個人某個相冊中的圖片Get
列出個人全部的圖片Get
列出個人某個一個ID的圖片Post
建立一個相冊Delete
刪除一個相冊Post
向相冊中上傳圖片Post
經過URL向相冊添加圖片Delete
從一個相冊中刪除一個圖片Get
列出個人文件Get
列出文件夾Post
建立一個文件夾Get
取得一個文件夾內容Delete
刪除一個文件夾Get
取得一個文件夾中的全部文件Post
上傳個人文件Post
把一個DataURL上傳爲文件Put
更新文件內容Put
移動文件位置Delete
刪除個人文件網站 | 方法 |
---|---|
Windows | 一、二、三、四、五、1三、1四、1六、1七、1八、1九、20、2一、2二、2三、2四、2五、2六、2七、2八、2九、32 |
一、二、三、四、五、六、1三、1四、1五、2二、2三、2四、2五、2六、2七、2八、2九、30、3一、32 | |
一、二、四、五、六、七、十、1三、1四、1五、1六、2二、27 | |
Dropbox | 一、2二、2三、2四、2五、2六、2七、2八、2九、32 |
一、二、四、五、六、七、八、九、十、十一、12 | |
Yahoo! | 一、二、5 |
一、二、四、五、十一、十二、15 | |
一、二、四、五、六、七、九、十一、12 | |
Soundcloud | 一、二、四、5 |
FourSquare | 一、二、四、5 |
Github | 一、二、四、五、10 |
Flckr | 一、二、四、五、1三、15 |
下面HelloJS或者HelloJS最小功能版git
編譯版源碼,包含了全部的模塊,能夠從GitHib。源碼文件可這裏上找到。github
# Install the package manager, bower npm install bower # Install hello bower install hello
必須把瀏覽安裝包安裝在上述的「/src」和「/dest」目錄下。該「/src」目錄提供了個性化的模塊,它能夠按你想要的功能打包。npm
注意:一些服務要求OAuth1或者服務器端OAuth2認證,所以,HelloJS用一個OAuth代理實現通信。json
快速起步向你演示瞭如何從零開始載入一個用戶名和頭像。就像上面的演示文檔那樣:windows
在下面的網站上註冊你的應用(至少註冊一個)。確保你註冊正確的域名,由於它們可能至關挑剔的。api
HTML<script src='./dist/hello.all.js'></script>
只須要添加一個onclick事件,可調用hello(network).login()。你能夠按你本身的喜愛樣式化按鈕。我一直用zocial css。不過網上還有不少別的圖標樣式和字體。
HTmL<button onclick="hello('windows').login()">windows</button>
讓咱們定義一個簡單的函數,它能夠在用戶登陸、以及網頁刷新以後,把用戶我的信息載入到網頁上。下面是事件監聽器,它能夠監聽認證事件的變化,併爲數據製做一個API調用。
javascripthello.on('auth.login', function(auth) { // Call user information, for the given network hello(auth.network).api('/me').then(function(r) { // Inject it into the container var label = document.getElementById('profile_' + auth.network); if (!label) { label = document.createElement('div'); label.id = 'profile_' + auth.network; document.getElementById('profile').appendChild(label); } label.innerHTML = '<img src="' + r.thumbnail + '" /> Hey ' + r.name; }); });
如今,能夠用到你在第一步時得到的註冊信息了。向hello.init函數傳遞參數[key:value,...],等等。
javascripthello.init({ facebook: FACEBOOK_CLIENT_ID, windows: WINDOWS_CLIENT_ID, google: GOOGLE_CLIENT_ID }, {redirect_uri: 'redirect.html'});
好了,上面這段代碼使演示文檔真正可用了。開始吧,沒有什麼藉口。
初始化環境。添加應用證書。
hello.init({facebook:id,windows:id,google:id,...});
credentials:
鍵值對對象。object(key=>value,...)
key type:string,example:"windows","facebook"or "google", description:App name
value type:string,example:"0000000AB1234",description:ID of the service to connect to
options:設置默認options,就像用在hello.login()中那樣。
javascripthello('facebook').logout().then(function() { alert('Signed out'); }, function(e) { alert('Signed out error: ' + e.error.message); });
取得當前的會話狀態。這是一個同步的請求,全部的可能過時的會話cookies都不可用。
hello.getAuthResponse(network)
network:
字符串類型
示例:"windows","facebook"
說明:服務項目之一
可選參數
默認值:current
{access_token: /^\\S+$/,expires: /\\d/}
javascriptvar online = function(session) { var currentTime = (new Date()).getTime() / 1000; return session && session.access_token && session.expires > currentTime; }; var fb = hello('facebook').getAuthResponse(); var wl = hello('windows').getAuthResponse(); alert((online(fb) ? 'Signed' : 'Not signed') + ' into Facebook, ' + (online(wl) ? 'Signed' : 'Not signed') + ' into Windows Live');
hello.api([path],[method],[data],[callback(json)]);
name | type | example | description | argument | default |
---|---|---|---|---|---|
path | string | "/me","/me/friends" | Path or URI of the resource, Can ba prefixed with the name of the service. | required | null |
method | string | "get","post","delete","put" | HTTP request method to use | optional | "get" |
data | object | {name:"Hello",description:"Fandelicious"} | A JSON object of data, FormData,HTMLInputElement,HTMLFormElement to be sent along with a "get","post"or "put" request | optional | null |
callback | function | function(json){console.log(json);} | A function to call with the body of the response returned in the first parameter as an object, else boolean false. | optional | null |
Get
取得我的信息調用方法
hello.api("/me","get",[data]).then([callback]); hello.api("/me","get",[data],[callback]);
回調函數取得的[data]
{name: /^[\\w\\d\\s\\.\\-]+$/,id: /^[\\w\\d\\@\\.\\-]+$/,thumbnail: /^(https?\\:\\/\\/|$)/}
Get
列出個人好友調用方法
hello.api("/me/friends","get",[data]).then([callback]); hello.api("/me/friends","get",[data],[callback]);
[data]
{limit:/^\\S+$/}
回調函數取得的[data]
{id:/^[\\w\\d\\@\\.\\-]+$/,name:/^[\\w\\d\\s\\.\\-]+$/,thumbnail:/^https?\\:\\/\\//}
Get
列出個人聯繫人調用方法
hello.api("/me/contacts","get",[data]).then([callback]); hello.api("/me/contacts","get",[data],[callback]);
[data]
{limit:/^\\S+$/}
回調函數取得的[data]
{id:/^[\\w\\d\\@\\.\\-]+$/,name:/^[\\w\\d\\s\\.\\-]+$/,thumbnail:/^https?\\:\\/\\//}
Get
列出fo個人人調用方法
hello.api("/me/followers","get",[data]).then([callback]); hello.api("/me/followers","get",[data],[callback]);
[data]
{limit:/^\\S+$/}
回調函數取得的[data]
{id:/^[\\w\\d\\@\\.\\-]+$/,name:/^[\\w\\d\\s\\.\\-]+$/,thumbnail:/^https?\\:\\/\\//}
Get
列出我fo的人調用方法
hello.api("/me/following","get",[data]).then([callback]); hello.api("/me/following","get",[data],[callback]);
[data]
{limit:/^\\S+$/}
回調函數取得的[data]
{id:/^[\\w\\d\\@\\.\\-]+$/,name:/^[\\w\\d\\s\\.\\-]+$/,thumbnail:/^https?\\:\\/\\//}
Get
列出我最近的狀態消息調用方法
hello.api("/me/share","get",[data]).then([callback]); hello.api("/me/share","get",[data],[callback]);
[data]
{limit:/^\\S+$/}
回調函數取得的[data]
{}