freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于ios的新浪微博畢業(yè)設(shè)計(編輯修改稿)

2025-07-24 17:48 本頁面
 

【文章內(nèi)容簡介】 信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就可以申請獲得該用戶資源的授權(quán),因此OAuth是安全的。OAuth協(xié)議為用戶資源的授權(quán)提供了一個安全的、開放而又簡易的標準。同時,任何第三方都可以使用OAuth認證服務(wù),任何服務(wù)提供商都可以實現(xiàn)自身的OAuth認證服務(wù),因而OAuth是開放的。業(yè)界提供了OAuth的多種實現(xiàn)如PHP、JavaScript,Java,Ruby等各種語言開發(fā)包,大大節(jié)約了程序員的時間,因而OAuth是簡易的。目前互聯(lián)網(wǎng)很多服務(wù)如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAuth認證服務(wù),這些都足以說明OAuth標準逐漸成為開放資源授權(quán)的標準。 OAuth相關(guān)的三個URLRequest Token URL: 獲取未授權(quán)的Request Token服務(wù)地址;User Authorization URL: 獲取用戶授權(quán)的Request Token服務(wù)地址;Access Token URL: 用授權(quán)的Request Token換取Access Token的服務(wù)地址。 OAuth相關(guān)的參數(shù)定義OAUTH_consumer_key: 使用者的ID,OAuth服務(wù)的直接使用者是開發(fā)者開發(fā)出來的應(yīng)用。所以該參數(shù)值的獲取一般是要去OAuth服務(wù)提供商處注冊一個應(yīng)用,再獲取該應(yīng)用的OAUTH_consumer_key。OAUTH_consumer_secret:OAUTH_consumer_key對應(yīng)的密鑰。OAUTH_token:OAUTH進行到最后一步得到的一個“令牌”,通過此“令牌”請求資源的網(wǎng)站就可以去擁有資源的網(wǎng)站抓取任意有權(quán)限可以被抓取的資源。 OAUTH_token_secret:OAUTH_token對應(yīng)的私鑰OAUTH_signature_method: 請求串的簽名方法,應(yīng)用每次向OAuth三個服務(wù)地址發(fā)送請求時,必須對請求進行簽名。簽名的方法有:HMACSHARSASHA1與PLAINTEXT等三種。OAUTH_signature: 用上面的簽名方法對請求的簽名。OAUTH_timestamp: 發(fā)起請求的時間戳,其值是距1970 00:00:00 GMT的秒數(shù),必須是大于0的整數(shù)。本次請求的時間戳必須大于或者等于上次的時間戳。OAUTH_nonce: 隨機生成的字符串,用于防止請求的重放,防止外界的非法攻擊。OAUTH_version: OAuth的版本號。 OAuth認證授權(quán)流程OAuth認證授權(quán)就三個步驟,三句話可以概括:(1) 獲取未授權(quán)的Request Token(2) 獲取用戶授權(quán)的Request Token(3) 用授權(quán)的Request Token換取Access Token當應(yīng)用拿到Access Token后,就可以有權(quán)訪問用戶授權(quán)的資源了。上面的三個步驟中,每個步驟分別請求一個URL,并且收到相關(guān)信息,并且拿到上步的相關(guān)信息去請求接下來的URL直到拿到Access Token[9]。具體每步執(zhí)行信息如下:① 使用者(第三方應(yīng)用)向OAUTH服務(wù)提供商請求未授權(quán)的Request Token。向Request Token URL發(fā)起請求,請求需要帶上參數(shù)。② OAuth服務(wù)提供商同意使用者的請求,并向其頒發(fā)未經(jīng)用戶授權(quán)的oauth_token與對應(yīng)的oauth_token_secret,并返回給使用者。③ 使用者向OAuth服務(wù)提供商請求用戶授權(quán)的Request Token。向User Authorization URL發(fā)起請求,請求帶上上步拿到的未授權(quán)的token與其密鑰。④ OAuth服務(wù)提供商將引導(dǎo)用戶授權(quán)。該過程可能會提示用戶,你想將哪些受保護的資源授權(quán)給該應(yīng)用。此步可能會返回授權(quán)的Request Token也可能不返回。如Yahoo OAuth就不會返回任何信息給使用者。④ Request Token 授權(quán)后,使用者將向Access Token URL發(fā)起請求,將上步授權(quán)的Request Token換取成Access Token。⑤ OAuth服務(wù)提供商同意使用者的請求,并向其頒發(fā)Access Token與對應(yīng)的密鑰,并返回給使用者。⑥ 使用者以后就可以使用上步返回的Access Token訪問用戶授權(quán)的資源。從上面的步驟可以看出,用戶始終沒有將其用戶名與密碼等信息提供給使用者(第三方軟件),從而更安全。用OAuth實現(xiàn)背景一節(jié)中的典型案例:當服務(wù)B(打印服務(wù))要訪問用戶的服務(wù)A(圖片服務(wù))時,通過OAuth機制,服務(wù)B向服務(wù)A請求未經(jīng)用戶授權(quán)的Request Token后,服務(wù)A將引導(dǎo)用戶在服務(wù)A的網(wǎng)站上登錄,并詢問用戶是否將圖片服務(wù)授權(quán)給服務(wù)B。用戶同意后,服務(wù)B就可以訪問用戶在服務(wù)A上的圖片服務(wù)。整個過程服務(wù)B沒有觸及到用戶在服務(wù)A的帳號信息。本軟件使用新浪微博的 ios SDK來輔助開發(fā),這里面已經(jīng)集成了一個開源的ios OAuth認證包:第三方應(yīng)用首先必須在新浪微博的開發(fā)者平臺上注冊成為開發(fā)者并且獲得相應(yīng)的app key 和app secret才可以引導(dǎo)用戶注冊[6]。新浪微博的開放平臺網(wǎng)址:。requestToken = (xiha://OAuthActivity)。().setRequestToken(requestToken)。url = ()。Intent intent = new Intent(,)。(url, url)。startActivity(intent)。首先設(shè)置RequestToken,”xiha://OAuthActivity”是一個ios系統(tǒng)定義的url類似于url,一個協(xié)議后跟著一個路徑,當授權(quán)成功后就打開注冊這個uri的頁面。獲取授權(quán)頁面的url后,通過一個intent傳到一個新的activity。在這個activity中,放置一個webview:(url)。這樣來打開授權(quán)頁面,效果如圖5所示,授權(quán)成功后就會打開注冊xiha://OAuthActivity這個uri的Activity。圖5 微博授權(quán)頁面 微博首頁模塊首先在manifest文件中為首頁的Activity下面這行代碼:intentfilter action:name=. / category:name=. / category:name=. / data:scheme=xiha:host=OAuthActivity / /intentfilter這樣,當用戶授權(quán)成功后就會打開這個Activity.在這個Activity中,主要是一個ListView,在ListView中的每一個條目中展示每一條微博。首先將獲得的Access_token和Access_token_secret 存儲到sharedPreference中,這樣的話用戶只需在初次使用時需要授權(quán),以后就可以直接獲取數(shù)據(jù)了: prefs = (this)。 RequestToken requestToken=().getRequestToken()。 AccessToken accessToken=((oauth_verifier))。 editor = ()。 (access_token,())。 (access_token_secret,())。 ()。這樣就存儲量用戶的認證數(shù)據(jù)。接下來我們獲得用戶關(guān)注的用戶的微博,只需下面這兩行代碼: weibo = ().getWeibo()。 friendsTimeline = (new Paging(1, 10))。由于獲取網(wǎng)絡(luò)數(shù)據(jù)所消耗的時間較長,且手機的網(wǎng)絡(luò)信號不穩(wěn)定因素更多,所以我們將它放在獨立的線程中來完成。當然可以用ObjectiveC的線程來實現(xiàn),但是ios為我們提供了更加簡單和方便的方法,繼承AsyncTask這個類并實現(xiàn)其中的doInBackground方法,把你希望在獨立線程中執(zhí)行的代碼放在這個方法中,然后在主線程中執(zhí)行該類對象的exectue方法就可以了。這里選擇這中方法而不應(yīng)java自身提供的線程機制還有一個原因,就是ios系統(tǒng)規(guī)定,只能在主線程中執(zhí)行對UI控件的操作,在其它線程中不行。但是在ios提供的AsyncTask這個類允許在其它線程中對控件進行操作。在這個類中還有一個方法叫onPostExecute的方法,它是一個回調(diào)函數(shù),會在doInBackground執(zhí)行完之后自動執(zhí)行,但是是在主線程中執(zhí)行,我們可以在這個方法中放置我們希望的語句。在這里我們會把獲得的數(shù)據(jù)傳給一個我們自己設(shè)置的Adapter。在ios中,用列表控件來顯示一組數(shù)據(jù),比如顯示存儲在數(shù)組中的很多人名,再比如顯示從數(shù)據(jù)庫查詢出來的結(jié)果列表。ios將顯示和數(shù)據(jù)分開來處理,在這二者中起到橋梁作用的就是adapter,示意圖如圖6所示。圖6 列表控件、adapter、數(shù)據(jù)間的關(guān)系圖圖的左邊的是一個列表控件,他只是一個空間的集合,內(nèi)部含有以下子控件,真正的內(nèi)容是顯示在這些子控件中的,其實列表控件的就是一個空間的集合。圖的右邊是數(shù)據(jù)的集合,可以是數(shù)組,數(shù)據(jù)庫,或者是任何組織方式的數(shù)據(jù)。圖的中間就是adapter,它是列表控件和數(shù)據(jù)間的橋梁,所以說,是adapter決定了列表控件中顯示的子控件的內(nèi)容。ios本身提供了一些基本的adapter,繼承結(jié)構(gòu)如圖7所示,其中的BaseAdapter是一個抽象類,繼承它需要實現(xiàn)較多的方法,所以也就具有較高的靈活性,我們的Adapter就是繼承的這個類。我們的Adapter需要把獲得的數(shù)據(jù)作為構(gòu)造函數(shù)的參數(shù)傳入,然后來將其放入到相應(yīng)的微博控件中。在ios系統(tǒng)中,ui控件可以用代碼來構(gòu)造,也可以用json文件來描述。后者就像是html和css,只能描繪靜態(tài)的外觀,事件監(jiān)聽等動態(tài)事件還是需要用代碼來完成的。后者將邏輯與展示分開,加快了開發(fā)效率,所以我們這次開發(fā)采用的是用json文件來描述ui。我們先來定義子控件的樣式,最終效果是這樣的如圖8所示。圖7 ios系統(tǒng)內(nèi)置adapter繼承層次圖圖8 子控件效果圖這就是我們在主頁模塊中的每一個微博的樣式,最外面它是一個水平方向的Linerlayout,右邊又是一個數(shù)值方向的的Linerlayout,然后依次是用戶姓名,微博發(fā)布的時間,微博內(nèi)容,微博發(fā)布方式,轉(zhuǎn)發(fā)和評論數(shù)量。下面我們來詳細描述一下我們自己定義的adapter。自己的adapter繼承自BaseAdapter,需要實現(xiàn)其中四個方法:intgetCount();返回數(shù)據(jù)的大小,這里我們返回從新浪微博一次取回的數(shù)據(jù)大小,()。ObjectgetItem(intarg0);從數(shù)據(jù)集合中返回參數(shù)arg0指定的數(shù)據(jù),我們這里返回第arg0個微博,所以我們的代碼是這樣的:return (location)。lo
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1