豆瓣api之OAuth認證

2022-02-16 11:03:12 字數 1602 閱讀 5270

豆瓣api通過oauth允許第三方應用訪問使用者資料,所以oauth認證就是我們整個project的基礎了。

oauth認證聽起來挺神秘,其實挺簡單的。

豆瓣的api有對於oauth認證的專門說明:

在你使用oauth認證之前,先仔細讀一讀文件非常有必要,因為中間過程出現一點偏差,你就不能被認證成功,所以仔細閱讀官方文件是重中之重:

如果你的英文不夠給力的話,可以看看這篇中文的介紹,說的很清楚:

google oauth專案已經提供了oauth的各種語言的庫:

我們正式使用了google oauth中的c#庫:

因為oauth已經成為了第三方開發者使用豆瓣api的一大障礙,豆瓣曾經專門舉辦了一次活動來講解如何通過oauth使用豆瓣api:

這次活動的原始碼在google code上可以找到:我們正式參考了這個檔案,對我們的幫助很大,省去了很多摸索的時間

作為命令列程式我們已經測試成功了,但是當移植到windows phone上之後就出現了問題

問題的關鍵在於silverlight版的網路方面的api和c#的不同,silverlight的api更少,這就導致了上面的庫的一些網路訪問要自己改寫

仔細閱讀httpwebrequest的文件後,我們發現,要進行乙個網路請求,至少要三個函式,因為需要使用兩次非同步請求(begingetrequeststream, begingetresponse)

這時候dry(don』t repeat yourself)就顯得尤為重要了

作為pm,我決定把網路訪問這一塊封裝好,給大家提供統一的,簡單好用的藉口。

我本準備自己把那兩個非同步請求封裝起來,後來發現已經有現成的庫可用,而且很好很強大。

這個庫就是restsharp:

而且restsharp還提供了windows phone對應的dll,很是方便,原來的三個函式現在只需要乙個函式幾行就可以搞定

對於很多請求,豆瓣都要求有認證才可以訪問,根據豆瓣的文件「進行post、put、delete請求時,豆瓣暫時不支援使用在url中或者post form中傳遞oauth引數。因此你只能選擇在header中傳遞oauth引數」,看來我們只能把oauth加到http header中了。

public oauthheader(string uri, string method)

public string getheader()}}

傳入乙個url和乙個方法(post or put or delete or get),我就給他返回乙個oauth header,其他同學直接呼叫我的**就好了,並不需要關心認證問題

那具體該如何來進行乙個網路請求呢?

我寫了兩個例子,乙個post的,乙個get的。

向豆瓣傳資料,post:(我把說明都寫到了注釋中)

// "post" 例項,以發一條狀態為例

private void button1_click(object sender, routedeventargs e));}

//get例項,以獲取好友列表為例,get比較簡單,不需要傳入資料

private void button3_click(object sender, routedeventargs e));}

這樣就可以大大簡化網路請求,真正做到了don』t repeat yourself

豆瓣api之OAuth認證

豆瓣api通過oauth允許第三方應用訪問使用者資料,所以oauth認證就是我們整個project的基礎了。oauth認證聽起來挺神秘,其實挺簡單的。豆瓣的api有對於oauth認證的專門說明 在你使用oauth認證之前,先仔細讀一讀文件非常有必要,因為中間過程出現一點偏差,你就不能被認證成功,所以...

php 豆瓣api 本地呼叫豆瓣API

呼叫豆瓣的api,報錯 剛開始學php,求大腿幫忙解決 頁面搜尋 js go click function elseelse var sq input val ajax type get url datatype json data q sq,count 10 success function da...

OAuth認證過程

一 什麼是oauth協議 oauth 開放授權 是乙個開放標準。允許第三方 在使用者授權的前提下訪問在使用者在服務商那裡儲存的各種資訊。而這種授權無需將使用者提供使用者名稱和密碼提供給該第三方 oauth允許使用者提供乙個令牌給第三方 乙個令牌對應乙個特定的第三方 同時該令牌只能在特定的時間內訪問特...