現(xiàn)在很流行api了,但各種api做法不一樣,下面我整理了一些自己的想法,也是看了各大門戶網(wǎng)站開(kāi)放的api應(yīng)用想到的,與大家分享分享,高手跳過(guò)。
API(Application Programming Interface,應(yīng)用程序編程接口)在WEB應(yīng)用中是非常常見(jiàn)的,比如開(kāi)發(fā)微薄應(yīng)用有微薄API,做淘寶的有淘寶API,不同的API有不同的接口方式,一般API都有一個(gè)URL的訪問(wèn)地址,通過(guò)這個(gè)訪問(wèn)地址可以獲取到用戶的自定義數(shù)據(jù),但這并不是公開(kāi)的,比如經(jīng)過(guò)了認(rèn)證后才能正確的訪問(wèn)到數(shù)據(jù)。
使用新浪微博API發(fā)布一條微薄就需要提供用戶名和密碼認(rèn)證后才能正確的發(fā)布微薄,總結(jié)了一下主要有以下幾種API接口認(rèn)證思路:
1. 使用HTTP Basic Authentication
在你訪問(wèn)一個(gè)需要HTTP Basic Authentication的URL的時(shí)候,如果你沒(méi)有提供用戶名和密碼,服務(wù)器就會(huì)返回401,如果你直接在瀏覽器中打開(kāi),瀏覽器會(huì)提示你輸入用戶名和密碼(google瀏覽器不會(huì),bug?)。你可以嘗試點(diǎn)擊這個(gè)url看看效果:http://api.minicloud.com.cn/statuses/friends_timeline.xml
要在發(fā)送請(qǐng)求的時(shí)候添加HTTP Basic Authentication認(rèn)證信息到請(qǐng)求中,有兩種方法:
一是在請(qǐng)求頭中添加Authorization,代碼如下:
Authorization: “Basic 用戶名和密碼的base64加密字符串”
二是在url中添加用戶名和密碼:
http://userName:password@api.minicloud.com.cn/statuses/friends_timeline.xml
實(shí)例代碼如下:
- $fp = fsockopen("m.survivalescaperooms.com",80);
- fputs($fp,"GET /downloads HTTP/1.0");
- fputs($fp,"Host: m.survivalescaperooms.com");
- fputs($fp,"Authorization: Basic " . base64_encode("user:pass") . "");
- fpassthru($fp);
2.使用Oauth認(rèn)證
OAUTH協(xié)議為用戶資源的授權(quán)提供了一個(gè)安全的、開(kāi)放而又簡(jiǎn)易的標(biāo)準(zhǔn)。與以往的授權(quán)方式不同之處是OAUTH的授權(quán)不會(huì)使第三方觸及到用戶的帳號(hào)信息(如用戶名與密碼),即第三方無(wú)需使用用戶的用戶名與密碼就可以申請(qǐng)獲得該用戶資源的授權(quán),因此OAUTH是安全的。
下載地址:http://code.google.com/p/oauth2-php/downloads/list
3. 使用SOAP
對(duì)于應(yīng)用程序開(kāi)發(fā)來(lái)說(shuō),使程序之間進(jìn)行因特網(wǎng)通信是很重要的。
目前的應(yīng)用程序通過(guò)使用遠(yuǎn)程過(guò)程調(diào)用(RPC)在諸如 DCOM 與 CORBA 等對(duì)象之間進(jìn)行通信,但是 HTTP 不是為此設(shè)計(jì)的,RPC 會(huì)產(chǎn)生兼容性以及安全問(wèn)題;防火墻和代理服務(wù)器通常會(huì)阻止此類流量。
通過(guò) HTTP 在應(yīng)用程序間通信是更好的方法,因?yàn)?HTTP 得到了所有的因特網(wǎng)瀏覽器及服務(wù)器的支持,SOAP 就是被創(chuàng)造出來(lái)完成這個(gè)任務(wù)的。
SOAP 提供了一種標(biāo)準(zhǔn)的方法,使得運(yùn)行在不同的操作系統(tǒng)并使用不同的技術(shù)和編程語(yǔ)言的應(yīng)用程序可以互相進(jìn)行通信。
新聞熱點(diǎn)
疑難解答