精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

手把手教你快速開發(fā)新浪微博的Firefox插件

開發(fā) 前端
在開發(fā)這個插件之前,自己對javascript的使用也就是web page中簡單的操作dom,而對于Firefox插件開發(fā)一無所知,OAuth連聽都沒有聽過。所以對于我眼前要干得事情我有兩個難點,第一就是Firefox的插件機制,第二就是了解OAuth。

Firefox的插件機制

對于一個Firefox插件來說,我們首先需要了解的它的組織結(jié)構(gòu)。打開一個Firefox插件工程,你一般會看這么幾個元素:chrome文件夾,defaults文件夾,chrome.manifest, install.rdf。

我們先從install.rdf說起,相比從文件名你就明白了這個文件是要干什么的。沒錯,這個文件就是Firefox插件的安裝文件。

  1. <!--?xml version="1.0"?-->  
  2. <RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#">  
  3.        
  4.     <DESCRIPTION about="urn:mozilla:install-manifest">  
  5.         <EM:ID>flashcard@gmail.com</EM:ID>  
  6.         <EM:VERSION>0.7</EM:VERSION>  
  7.         <EM:TYPE>2</EM:TYPE>  
  8.         <EM:NAME>flashcard</EM:NAME>  
  9.         <EM:DESCRIPTION>Post the selected word to Sina weibo.</EM:DESCRIPTION>  
  10.         <EM:HOMEPAGEURL>https://feihe.cnblogs.com</EM:HOMEPAGEURL>  
  11.                 <EM:ICONURL>chrome://flashcard/skin/icon.png</EM:ICONURL>  
  12.           
  13.         <EM:CREATOR>Fei He</EM:CREATOR>  
  14.  
  15.         <EM:TARGETAPPLICATION>  
  16.             <DESCRIPTION>  
  17.                 <EM:ID>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</EM:ID>  
  18.                 <EM:MINVERSION>3.0</EM:MINVERSION>  
  19.                 <EM:MAXVERSION>4.0.*</EM:MAXVERSION>  
  20.             </DESCRIPTION>  
  21.         </EM:TARGETAPPLICATION>  
  22.     </DESCRIPTION>  
  23. </RDF> 

里面也就是對于你的Firefox插件的一些描述信息,其中比較關(guān)鍵的兩個, 在根節(jié)點description下的是你的Firefox插件的id,也就是說這個東西必須唯一(至少在你的Firefox所有插件中唯一),另一個位于的下的則是Firefox的id,這個是不能修改的。再就是和,它們用來描述你的Firefox插件對于Firefox版本的兼容性。

接著我們來了解defaults,一句話defaults就是你的Firefox插件的preferences的default設(shè)置。

對于一個Firefox插件最核心的部分就是chrome.manifest和chrome文件夾。chrome.manifest有點像.NET的project文件,基本上就是對于整個Firefox插件所有元素的位置信息,而Firefox本身就是通過這個這個manifest來定位具體的元素。那么一個Firefox插件會包含那些元素呢?打開chrome.manifest你就一目了然了。

overlay chrome://browser/content/browser.xul chrome://flashcard/content/overlay.xul

content flashcard chrome/content/flashcard/

skin flashcard classic chrome/skin/classic/flashcard/

locale flashcard en-US chrome/locale/flashcard/en-US/

style chrome://global/content/customizeToolbar.xul chrome://flashcard/skin/skin.css

這里面的結(jié)構(gòu)基本都是行結(jié)構(gòu)的,每一個行的頭就是具體的Firefox插件元素名稱,而后面的是告訴Firefox去那個位置查找這個元素。而這其中包含了這么幾個元素:

◆ overlay: 指向你的Firefox插件的一個UI元素,包括contextmenu,toolbar,navigator bar之類。在上面的manifest中你看我這里指向了一個后綴名是xul的文件,其實它的全稱是Xml User Interface。顧名思義就是使用xml的格式來描述UI。

  1. <!--?xml version="1.0"?-->  
  2. <!--?xml-stylesheet href="chrome://flashcard/skin/skin.css" type="text/css"?-->  
  3.  
  4. <OVERLAY id=flashcardOverlay>  
  5.  
  6.     <SCRIPT type=application/x-javascript><!--mce:0--></SCRIPT>  
  7.     <SCRIPT type=application/x-javascript><!--mce:1--></SCRIPT>  
  8.     <SCRIPT type=application/x-javascript><!--mce:2--></SCRIPT>      
  9.     <SCRIPT type=application/x-javascript><!--mce:3--></SCRIPT>  
  10.  
  11.     <SCRIPT type=application/x-javascript><!--mce:4--></SCRIPT>  
  12.     <SCRIPT type=application/x-javascript><!--mce:5--></SCRIPT>  
  13.     <SCRIPT type=application/x-javascript><!--mce:6--></SCRIPT>  
  14.       
  15.     <MENUPOPUP id=contentAreaContextMenu>  
  16.         <MENUSEPARATOR id=separator_flashcard>  
  17.         <MENUITEM id=menuitem_flashcard_add class=menuitem-iconic image="chrome://flashcard/skin/word.png">  
  18.     </MENUITEM></MENUSEPARATOR></MENUPOPUP>  
  19. </OVERLAY>  

上面是我用的一個overlay.xul, 我這里是給Firefox的contextmenu加了一個新的menuitem,并使用separator和原有的menuitems分隔起來。這里的文件名是可以隨意取的,那是你起的名字必須在chrome.manifest中應(yīng)用。到這里很多人好奇,那么你加的menuitem相應(yīng)的行為在那里呢?細(xì)心的你也許發(fā)現(xiàn)我這個xul中引用了一些javascript,而對于我們menuitem,F(xiàn)irefox提供了2中方法去關(guān)聯(lián)行為:第一種就是在control的oncommand中直接指定control的行為;第二中是javascript中使用document.getElementByID來獲取control從而綁定行為:

  1. <DIALOG id=dialog_login title=FlashCard persist="screenX screenY width height" 
  2. windowtype="DialogWindowType" 
  3. buttons="accept,cancel" 
  4. onload="window.sizeToContent();"
  5.  ondialogaccept="return login();">  
  6.   </DIALOG>  
  1. document.getElementById("menuitem_flashcard_add").addEventListener("click"function(event){}, false);  

并且,我也在這個文件中指定了css文件。其實對于xul文件中javascript和css的使用和html都基本一致。

◆ content: 就是你的Firefox插件的核心,包括javascript腳本和XUL

◆ skin:即使皮膚,你可以在給你的插件做不同的皮膚,我的mainifest中指定了我使用classic的皮膚,所以我在skin文件夾下就應(yīng)classic的文件夾來對應(yīng)。

◆ locale:國際化,對于我們Firefox插件中需要需要國家化的UI control, 我們可以使用它的label屬性,同時在chrome.manifest中指定的culture文件夾下定義dtd文件來對應(yīng),例如: overlay.xul中的control定義:

  1.         <MENUITEM id=menuitem_flashcard_add class=menuitem-iconic   
  2. image="chrome://flashcard/skin/word.png" label="&flashcard.menuitem.label;"> 
  3. </MENUITEM> 

dtd文件的定義:

  1. <!--ENTITY flashcard.menuitem.label "Post to flashcard"-->  

它們之間使用control的label屬性關(guān)聯(lián),而overlay.xul具體和chrome.manifest指定culture文件夾下的那個dtd文件關(guān)聯(lián),你可以看到在我的overlay.xul中有這么一句定義:

◆ style: 也就是overlay的一些樣式,比如css。

你的Firefox插件有了UI,也有了相應(yīng)的行為和樣式,那么你還需要什么呢?需要存儲,也就是你需要存儲一些preferences信息或者其他的比如我這里我需要存儲新浪微博中用戶授權(quán)通過之后獲得的Oauth_token的相關(guān)信息。Firefox對于存儲提供了很多方式,你可文件存貯在特殊位置,或者使用sqlite這種肖的文件數(shù)據(jù)庫。另外一種最簡單的也就是我采用的就是preferences的存貯。對于Firefox插件,你可以在你的install.rdf中注明你的preference文件,這樣你可以讓用戶使用的preference文件做一些設(shè)置,并保存。而我這里我指希望使用preferences來存貯,所以我并不希望用戶看到它,那么我就不需要在install.rdf中注明。

preference文件也是一個xul文件,所以你也可以應(yīng)用javascript和css,來對于你的preference中的control進(jìn)行行為的綁定和樣式的渲染。我這里的preference如下:

  1. <!--?xml version="1.0"?-->  
  2. <!--?xml-stylesheet href="chrome://global/skin/" type="text/css"?-->  
  3.  
  4. <PREFWINDOW>  
  5.     <PREFPANE label="Flash Card Preferences">  
  6.     <PREFERENCES>  
  7.         <PREFERENCE id=pref_access_token name="Sina.WeiBo.oauth.access_token" type="string">  
  8.         <PREFERENCE id=pref_access_token_secret name="Sina.WeiBo.oauth.access_token_secret" type="string">  
  9.     </PREFERENCE></PREFERENCE></PREFERENCES>  
  10. </PREFPANE></PREFWINDOW>  

而這其中的preferences節(jié)點中的內(nèi)容便是用來做preference存貯的,你可以像我一樣通過

  1. Components.classes["@mozilla.org/preferences-service;1"].getService  
  2. (Components.interfaces.nsIPrefService).getBranch("Sina.WeiBo.")  

來獲得所有name前綴為Sian.Weibo的preference,然后調(diào)用它的getCharPref('oauth.access_token')來獲取值,或者通過setCharPref('oauth.access_token')設(shè)置值,對于preference,MDN上有詳細(xì)的API介紹。對于在preference中引用javascript比較tricky的一點就是如果在你preference中使用prePanel,那么javascript的引用代碼一定要在prePanel后面,否則你的prePanel就什么都看不到了。

最后一點,有些時候也許你希望你的Firefox插件在完成某些行為之后給用戶一個notification,在Firefox3中你可以使用普通的notification或者alert,而在Firefox4中你可以使用popupNotification,效果非常炫,而且還可以指定圖片和相應(yīng)的action,使得用戶在得到這個notification之后可以做進(jìn)一步的行為。示例如下:

  1. PopupNotifications.show(gBrowser.selectedBrowser, "flashcard-add",  
  2.         '"'+ selectedWord +'" 已經(jīng)成功加入你的單詞本',  
  3.         null,   
  4.         {  
  5.             label: "確定",  
  6.             accessKey: "D",  
  7.             callback: function() {  
  8.             }     
  9.         },  
  10.         [  
  11.             {  
  12.                 label: "Reset",  
  13.                 accessKey: "R",  
  14.                 callback: function() {  
  15.                     Browser.Preferences.clearUserPref("oauth.access_token");  
  16.                     Browser.Preferences.clearUserPref("oauth.access_token_secret");  
  17.                 }     
  18.             },  
  19.         ]);  

而指定圖片則要在css中

  1. .popup-notification-icon[popupid="flashcard-add"] {  
  2.     list-style-image: url("chrome://flashcard/skin/icon.png");  
  3. }  

這里是我在快速開發(fā)一個Firefox插件中獲得知識,如果你希望更詳細(xì)的知識還是需要參考MDN。寫到這里發(fā)現(xiàn)篇幅有點長,還是決定分為上,下兩篇。下篇來講Sina WeiBo的Oauth授權(quán)機制。

#p#

上篇主要講了講Firefox插件的機制,接著我們來看快速開發(fā)一個Firefox插件中我面臨的第二個問題----Oauth授權(quán)(開始開發(fā)的時候只是想著快速開發(fā)完成,當(dāng)然授權(quán)這塊最快的方案自然就是basic auth,但是新浪微博6月1號以后就不支持basic auth了。)。

Oauth的官網(wǎng)上說是這樣描述它的用途:

An open protocol to allow secure API authorization in a simpleand standard method from desktop and web applications.

在Oauth的官網(wǎng)上對Oauth有詳盡的描述以及不用語言對于Oauth的實現(xiàn),對于我的開發(fā)我需要了解的其實非常簡單.

首先對于Oauth有三個url是必須了解的:

◆ Request Token URL

◆ User Authorize URL

◆ Access Token URL

另外,我們還需要了解針對這些URL相應(yīng)的一些參數(shù):

◆ oauth_consumer_key

◆ oauth_consumer_secret

◆ oauth_signature_method

◆ oauth_signature

◆ oauth_timestamp

◆ oauth_nonce

◆ oauth_version

具體這些URL和參數(shù)有什么作用呢?我們結(jié)合新浪微博來說。對于開發(fā)一個新浪微博的應(yīng)用,你必須在新浪微博申請一個app key和app key secret, 有了它們我們就可以開始了。新浪的Oauth是這樣一個流程:

1. 第一次你需要做的是Request Token URL,對于新浪微博就是http://api.t.sina.com.cn/oauth/request_token。接著就是請求的參數(shù)了,這個時候你需要把你申請的app key作為oauth_consumer_key, 而把你的app key secret作為oatu_consumer_secret。oauth_signature_method就是你的加密算法,oauth支持 HMAC-SHA1, RSA-SHA1, PLAINTEXT這三種算法,而新浪微博指定需要HMAC-SHA1,所以對與oauth_signature_method我們這里就是HMAC-SHA1了。oauth_timestamp就是請求的時間戳,這個時間戳的范圍是現(xiàn)在1970 00:00:00 GMT的秒數(shù),而且每次請求的時間戳必須大于上次的。oauth_nonce就是隨機生成的一個字符串,就是為了防止重復(fù)請求。oauth_version現(xiàn)在只能是1.0。最后我們需要對所有參數(shù)使用oauth_signature_method指定的加密算法加密作為oauth_signature。對于請求的參數(shù),我們有兩種綁定方式:Get: 拼URL;Post: 放在Http heads里。 有了URL和參數(shù)我們就可以發(fā)起我們的請求。當(dāng)新浪微博接受我們的請求檢查合法后,會返回給我們一個未授權(quán)的oauth_token和oauth_token_secret,因為我們還沒有獲得用戶的授權(quán)。

2. 有了上一步的請求返回的oauth_token和oauth_token_secret,在進(jìn)行下一步請求之前我們需要根據(jù)我們應(yīng)用的類型決定我們下一步的策略。如果我們是一個web應(yīng)用,我們有自己的域名我們就可以選擇使用callback_url的方式,但是我要做得是一個Firefox插件這種方式顯然不合適,那么我只有選擇使用verify PIN的方式了。確定了這個,我們請求User Authorize URL(對于新浪微博就是http://api.t.sina.com.cn/oauth/authorize)。這次的參數(shù)和上次的參數(shù)還是有一些小小的差別的:首先,我們這次需要用上次請求返回的oauth_token作為oauth_consumer_key, 使用返回的oauth_token_secret作為oauth_consumer_secret,oauth_signature_method不變,oauth_timestamp根據(jù)這次請求的時間重新生成,oauth_nonce重新生成,oauth_version不變,而oauth_signature根據(jù)這次的參數(shù)生成。在User Authorize過程中,我們要加一個參數(shù)callback_url。因為我們采用verify PIN的方式,所以這個參數(shù)我可以指定為xml。因為這一步就用戶授權(quán),那么我們自然還是要輸入我們需要訪問的新浪微博賬號的用戶名和密碼,分別作為userId, passwd。新浪微博接收到我們的User Authorize請求檢查合法后,會以xml格式返回給我們一個oauth_verifier,證明我們的應(yīng)用獲得了用戶的授權(quán)。

3.  有了oauth_verifier, 加上我們第一步獲得oauth_token和oauth_token_secret,其他參數(shù)還是按照前面的規(guī)則(這次不需要oauth_callback)構(gòu)成我們的參數(shù),我們來請求Access Token URL(對于新浪微博就是http://api.t.sina.com.cn/oauth/access_token)。 這一次新浪微博會返回access_token和access_token_secret, 我們授權(quán)就通過了。而這個access_token和access_token_secret當(dāng)我們以后請求新浪微博API時,會作為oauth_consumer_key和oauth_consumer_secret出現(xiàn)。比如我們要發(fā)送微博,新浪微博發(fā)送微博的API是http://api.t.sina.com.cn/statuses/update.json。這時我們還是按照前面的規(guī)則組織參數(shù)(以access_token作為oauth_consumer_key, access_token_secret作為oauth_consumer_secret),同時加上參數(shù)status,值為我們需要發(fā)送的內(nèi)容就OK了。

到這一步,我們還不算完,因為我們需要在Firefox的插件中調(diào)用新浪微博的oauth。我們都知道javascript直接調(diào)用新浪微博的API是跨域請求,這是不被允許的。而我們通常解決跨域請求的方式主要就是:Jsonp, flash,iframe。這里面我們唯一可以嘗試是jsonp,而jsonp是需要server端也就是新浪微博配合的,而實際上新浪微博是不支持jsonp的。那是不是我們沒有辦法了呢?

@mozilla.org/xmlextras/xmlhttprequest;1

查看了MDN的文檔,發(fā)現(xiàn)Firefox自己的Xmlhttprequest可以,而且可以指定同步還是移步,然后在callback方法里解析返回參數(shù)。具體如何實現(xiàn)MDN。

ps:這個插件的代碼是作為一個其他應(yīng)用的一部分,這涉及其他人的勞動,有興趣可以發(fā)站內(nèi)信或郵件我會單獨發(fā)一份(只包含F(xiàn)irefox插件部分)給你。

【編輯推薦】

  1. 驚動大神的JavaScript:在Web上運行Linux
  2. 19個很有用的JavaScript庫強烈推薦
  3. 用JavaScript防止網(wǎng)站被掛IFRAME木馬的方法
  4. 從零開始學(xué)習(xí)jQuery之你必須知道的JavaScript
  5. 泄露你的JavaScript技術(shù)很爛的五個表現(xiàn)
責(zé)任編輯:陳貽新 來源: Fei He's Blog
相關(guān)推薦

2021-02-26 11:54:38

MyBatis 插件接口

2024-04-02 08:58:13

2024-03-05 18:27:43

2024-03-18 18:07:38

VSCode插件文件

2016-04-27 09:49:16

用戶模型產(chǎn)品總結(jié)

2011-04-28 15:09:15

jQueryjqPlot

2011-05-03 15:59:00

黑盒打印機

2011-01-10 14:41:26

2025-05-07 00:31:30

2021-07-14 09:00:00

JavaFX開發(fā)應(yīng)用

2011-03-28 16:14:38

jQuery

2014-11-17 11:13:17

易維

2022-12-05 10:47:37

2011-02-22 13:46:27

微軟SQL.NET

2021-12-28 08:38:26

Linux 中斷喚醒系統(tǒng)Linux 系統(tǒng)

2021-09-26 16:08:23

CC++clang_forma

2023-04-26 12:46:43

DockerSpringKubernetes

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2022-07-27 08:16:22

搜索引擎Lucene

2022-01-08 20:04:20

攔截系統(tǒng)調(diào)用
點贊
收藏

51CTO技術(shù)棧公眾號

伊人色综合一区二区三区影院视频| 亚洲国产精品suv| 狠狠色狠狠色综合婷婷tag| 欧美在线短视频| 欧美在线播放一区| 国产绿帽刺激高潮对白| 亚洲欧洲一区| 中文字幕一精品亚洲无线一区| 第一区免费在线观看| 天堂va在线| www国产亚洲精品久久麻豆| 国产日产久久高清欧美一区| 妺妺窝人体色www婷婷| 理论片一区二区在线| 欧美色大人视频| 青青青国产在线观看| 成人精品一区二区三区校园激情| 国产精品一区三区| 日本不卡高字幕在线2019| 日本中文在线视频| 亚洲区小说区图片区qvod按摩| 欧美精品三级日韩久久| www.av毛片| 成人在线影视| 亚洲国产成人在线| 久久国产一区| 亚洲精品.www| 国产一区二区网址| 国产精品免费网站| 久久精品一二区| 欧美视频亚洲视频| 久久精品电影一区二区| 人妻精品久久久久中文字幕| 秋霞影院一区| 欧美女孩性生活视频| 欧美 日韩精品| 阿v视频在线观看| 亚洲精选视频免费看| 亚洲精品一区二区三区樱花| 五月激情丁香婷婷| 成人激情小说乱人伦| 4444kk亚洲人成电影在线| 国产精品无码一区| 亚洲中字黄色| 538国产精品视频一区二区| www.色小姐com| 91精品国产视频| 日韩中文字幕免费视频| 日韩不卡av在线| 精品成人影院| 亚洲性无码av在线| 91激情视频在线观看| 国产精品17p| 精品国产区一区| 女教师高潮黄又色视频| 国产精品久久久久久久久久辛辛| 欧美日韩一区二区三区四区五区 | 亚洲福利视频一区| www.18av.com| 国产在线xxx| 亚洲午夜精品网| 久草视频这里只有精品| 丁香花在线高清完整版视频| 亚洲制服丝袜av| 欧美大黑帍在线播放| 欧美videossex另类| 亚洲高清免费视频| 免费成人在线视频网站| 亚洲黄色中文字幕| 欧洲一区二区三区在线| 亚洲老女人av| 国产亚洲高清在线观看| 日韩欧美在线观看一区二区三区| 老女人性生活视频| 国产精品午夜av| 精品久久久久久久久久久久久久久 | 天天干天天舔天天操| 日韩精品免费| 九九精品在线观看| 日韩成人av毛片| 先锋影音久久久| 国产精品亚洲网站| 99久久亚洲精品日本无码| 国产suv精品一区二区6| 久久久久久欧美精品色一二三四| 国产在线视频网| 综合自拍亚洲综合图不卡区| 国产精品一色哟哟| 亚洲wwww| 日韩欧美色综合网站| 97人妻精品一区二区三区免| 国内成人自拍| 欧美日本亚洲视频| 国产suv精品一区二区33| 麻豆中文一区二区| 国产欧美在线一区二区| 国产高清一区在线观看| 亚洲精品ww久久久久久p站 | 久久免费国产| 亚洲www在线| 欧美套图亚洲一区| 亚洲四区在线观看| 99蜜桃臀久久久欧美精品网站| 国产a亚洲精品| 精品国产免费人成在线观看| 久久久久亚洲av无码a片| 午夜日韩激情| 国产精品色午夜在线观看| 亚洲黄色片视频| 国产精品久久免费看| 日韩精品综合在线| 欧美一区二区三区婷婷| 精品视频在线播放色网色视频| 少妇视频一区二区| 亚洲欧美日韩专区| av资源站久久亚洲| 免费在线观看av网站| 精品露脸国产偷人在视频| 欧美在线aaa| 亚洲精品国产setv| 国模吧一区二区| 国产精品久久无码一三区| 久久先锋资源网| av无码久久久久久不卡网站| 国产精品天堂蜜av在线播放 | 成年人视频在线观看免费| 亚洲一二三四久久| 加勒比av中文字幕| 成人激情电影在线| 人妖精品videosex性欧美| 色噜噜在线播放| 亚洲精品视频在线观看免费| 手机在线看福利| 日韩mv欧美mv国产网站| 欧美丰满老妇厨房牲生活| 国产精品老熟女视频一区二区| 久久精品一区二区三区四区| 真人抽搐一进一出视频| 日韩精品一区二区三区中文在线| 中文字幕日韩视频| 中文字幕福利视频| 日本一区二区视频在线| av免费在线播放网站| 日韩高清三区| 欧美一区视频在线| 欧美少妇另类| 在线观看成人免费视频| 一级黄色片大全| 久久中文欧美| 欧洲精品在线一区| 在线观看精品| 中文字幕自拍vr一区二区三区| 无码人妻丰满熟妇奶水区码| 久久女同互慰一区二区三区| 免费看的黄色大片| 妖精一区二区三区精品视频 | 国产午夜在线播放| 91首页免费视频| 欧美色图色综合| 亚洲素人在线| 国产精品久久久av久久久| 成人在线免费公开观看视频| 欧美色偷偷大香| 欧美性生交大片| 国产伦精品一区二区三区免费| 国产香蕉一区二区三区| 51精品国产| 97国产精品视频人人做人人爱| 污污网站免费在线观看| 精品久久久久久| 亚洲成人黄色av| 久久精品国产在热久久| 懂色av粉嫩av蜜臀av| 日韩中文字幕在线一区| 国内精品视频在线| 国产无套粉嫩白浆在线2022年| 欧美图片一区二区三区| 99鲁鲁精品一区二区三区| 国产老肥熟一区二区三区| 久久国产精品网| 亚洲三级网页| 91午夜理伦私人影院| freexxx性亚洲精品| 亚洲毛片在线观看.| 亚洲一卡二卡在线| 亚洲福利一二三区| 黑人と日本人の交わりビデオ| 狠狠色丁香婷综合久久| 妺妺窝人体色777777| 精品久久一区| 成人欧美一区二区三区视频xxx| 大桥未久在线视频| 色噜噜久久综合伊人一本| www.国产麻豆| 在线观看一区二区视频| 欧美精品入口蜜桃| 国产欧美一区在线| 中文字幕18页| 美女脱光内衣内裤视频久久影院| 狠狠噜天天噜日日噜| 免费一区二区三区视频导航| 成人免费福利视频| 厕沟全景美女厕沟精品| 久久亚洲精品中文字幕冲田杏梨| 亚洲人妻一区二区三区| 欧美另类高清zo欧美| 天天综合网久久综合网| 1区2区3区精品视频| 黄瓜视频污在线观看| 国产毛片精品视频| 午夜激情av在线| 国产亚洲亚洲| 日本福利视频在线观看| 欧美偷拍自拍| 久久综合九色99| 日韩成人久久| 国产在线视频一区| 成人啊v在线| 91精品国产电影| av大片在线| 日韩在线观看免费高清| 噜噜噜噜噜在线视频| 精品成人一区二区三区四区| 中文字幕在线播出| 欧美视频中文字幕在线| 久久中文字幕在线观看| 亚洲欧洲综合另类| 久草福利资源在线| 国产欧美一区二区三区在线老狼 | 中文字幕无线码一区| 亚洲成av人片在www色猫咪| 人人澡人人澡人人看| 国产精品美女久久久久久久 | 国产黄色av片| 51精品视频一区二区三区| jizz国产在线| 在线视频中文字幕一区二区| 日本va欧美va国产激情| 亚洲国产日韩精品| 久久精品国产亚洲av无码娇色| 亚洲人成伊人成综合网小说| 亚洲天堂最新地址| 国产精品色呦呦| 无码人妻aⅴ一区二区三区69岛| www成人在线观看| 国产亚洲无码精品| 99re成人精品视频| 成年人在线观看av| 久久久久久久性| 91精彩刺激对白露脸偷拍| 91美女精品福利| 久久久久久九九九九九| 久久婷婷国产综合国色天香| 我和岳m愉情xxxⅹ视频| 久久这里都是精品| 少妇精品无码一区二区免费视频 | 日韩久久精品一区| 精品人妻少妇AV无码专区| 欧美v国产在线一区二区三区| www.日韩高清| 亚洲高清免费观看高清完整版| 隣の若妻さん波多野结衣| 亚洲国产精品资源| 久蕉在线视频| 日韩在线观看免费全集电视剧网站| √新版天堂资源在线资源| 视频一区视频二区国产精品| 麻豆网在线观看| 欧美激情中文网| 人成在线免费网站| 国产精品成人国产乱一区| 欧美另类激情| 99久久99久久| 亚洲盗摄视频| 亚洲一一在线| 国模吧视频一区| 国产淫片免费看| 青青草伊人久久| 黄色片子免费看| 99精品热视频| 免费人成又黄又爽又色| 《视频一区视频二区| 国产高潮国产高潮久久久91| 亚洲最色的网站| 免费的毛片视频| 91精品午夜视频| 亚洲av激情无码专区在线播放| 亚洲天堂av在线播放| a级片国产精品自在拍在线播放| 久久久免费高清电视剧观看| 黑人巨大精品欧美一区二区桃花岛| 国产精品啪视频| 精品素人av| 一区二区av| 久久电影一区| 毛毛毛毛毛毛毛片123| 91蝌蚪porny九色| 日本aⅴ在线观看| 色综合网色综合| 亚洲a视频在线观看| 永久免费看mv网站入口亚洲| 91网址在线观看| 国产精品久久久久久av福利软件| 午夜免费欧美电影| 先锋影音一区二区三区| 亚洲高清在线| 日本精品一区在线| 91麻豆123| 在线看成人av| 91精品国产综合久久精品app| 天堂91在线| 欧美激情在线观看视频| 电影一区中文字幕| 日本在线观看一区| 伊人成人在线视频| 国产又粗又猛大又黄又爽| 国产亚洲短视频| 欧美啪啪小视频| 亚洲аv电影天堂网| 免费看美女视频在线网站 | 99久热在线精品视频观看| 久久影院理伦片| 精品99视频| 三大队在线观看| 亚洲男人的天堂一区二区| 中文字幕av第一页| 亚洲男人天堂久| 欧美在线极品| 九色视频成人porny| 亚洲午夜电影| 超级砰砰砰97免费观看最新一期 | 免费无码毛片一区二区app| 欧美日韩国产123区| 黄色视屏网站在线免费观看| 2018国产精品视频| 露出调教综合另类| 成人性生活视频免费看| 不卡欧美aaaaa| 精品人妻在线播放| 精品日韩成人av| 伊人福利在线| 91九色在线免费视频| 久久久久久久久久久9不雅视频| 中文字幕av不卡在线| 亚洲国产精品精华液2区45| 亚洲国产精品无码久久久| 日韩精品在线观| 伊人久久av| 神马影院一区二区| 久久精品国内一区二区三区| 国产中文字幕久久| 91精品麻豆日日躁夜夜躁| 黄网址在线观看| 91九色对白| 激情久久一区| 素人fc2av清纯18岁| 一本高清dvd不卡在线观看 | 久久久99久久精品女同性| 成人噜噜噜噜| 国产精品视频二| gogo大胆日本视频一区| 亚洲精品午夜国产va久久成人| 精品偷拍各种wc美女嘘嘘| 欧美特黄aaaaaaaa大片| 亚洲一二三区在线| 国产精品一区二区在线看| 国产乡下妇女做爰| 日韩精品视频在线免费观看| 日韩av中字| 在线免费观看一区二区三区| 国产伦精品一区二区三区视频青涩 | 亚洲男人天堂av网| 欧美自拍第一页| 日本精品久久久| 色综合天天爱| 国产艳妇疯狂做爰视频| 欧美性xxxx极品hd欧美风情| 高清中文字幕一区二区三区| 91视频8mav| 一区二区三区高清视频在线观看| 人人妻人人藻人人爽欧美一区| 欧美日韩一级黄| 黄色污污视频在线观看| 就去色蜜桃综合| 精品写真视频在线观看| 国产特黄大片aaaa毛片| 在线视频日本亚洲性| 欧美成年网站| 欧美视频第一区| 一区二区三区在线免费播放| 久久视频www| 亚洲aⅴ日韩av电影在线观看| 国产精品普通话对白| 欧美一区二区三区观看| 亚洲国语精品自产拍在线观看| 成人在线观看免费播放| 九九热只有这里有精品| 中文文精品字幕一区二区| 日日夜夜精品免费| 成人午夜两性视频|