下面簡單介紹新浪微網誌的登入 過程:
在登入之前我們需要先從新浪伺服器擷取兩個變量:servertime,nonce。其中servertime中新浪的伺服器時間,nonce是一 個随機生成的字元串。擷取的需要通過這樣一個網絡接口:http://login.sina.com.cn/sso/prelogin.php?entry=miniblog&callback=sinaSSOController.preloginCallBack&user="+username+"&client=ssologin.js(v1.3.12)
其中username是你的使用者名。
擷取到我們需要的内容後,接下來就是加密的過程了。加密使用的是通用的SHA1加密 算法:
- 把密碼進行一次SHA1加密,結果再進行一次SHA1加密
- 把經過兩次SHA1加密的結果附上servertime,nonce再進行一次SHA1加密
- 加密的結果作為登入密碼
登入位址沒有變,仍使用:http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.12)
但參數要複雜一點了:
service:選擇服務,我們這裡使用的新浪微網誌:miniblog
client:ssologin.js%28v1.3.12%29
entry:miniblog
encoding:utf-8
gateway:1
savestate:0
useticket:1,這裡使用到了登入票據。
username:你的使用者名
servertime:上步得到的伺服器時間
nonce:上步得到的随機字元串
pwencode:wsse(沒整明白是個什麼東西,不過從來不變)
password:加密後的密碼
url:一個回調位址
returntype:META(使用中沒有發生變化)
ssosimplelogin:1 example: http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.12)&service:miniblog&client:ssologin.js%28v1.3.12%29&entry:miniblog&encoding:utf- 8&gateway:1&savestate:0&useticket:1&username: 使用者 名&servertime:1308647606&nonce:L8QJHE&pwencode:wsse&password:f435c677294851d13794359145e6f96826c1 c3d2&url:http://www.baidu.com&returntype:META&ssosimplelogin:1