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

正文內(nèi)容

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

2025-07-24 17:48 本頁(yè)面
 

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