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

HarmonyOS 第三方登錄之QQ登錄

開發(fā) OpenHarmony
因?yàn)轼櫭上到y(tǒng)剛出不久,官方的第三方登錄SDK還沒出來,下面就介紹下在鴻蒙應(yīng)用中實(shí)現(xiàn)QQ登錄的方法(支持喚起QQ安卓客戶端進(jìn)行授權(quán))

[[438480]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

前言

因?yàn)轼櫭上到y(tǒng)剛出不久,官方的第三方登錄SDK還沒出來,下面就介紹下在鴻蒙應(yīng)用中實(shí)現(xiàn)QQ登錄的方法(支持喚起QQ安卓客戶端進(jìn)行授權(quán))

前期準(zhǔn)備

登錄QQ開放平臺(tái) > 應(yīng)用管理 > 創(chuàng)建應(yīng)用 ,創(chuàng)建一個(gè)網(wǎng)站應(yīng)用。

注意:要選擇網(wǎng)站應(yīng)用,移動(dòng)應(yīng)用和小程序不適用該方案。

編寫代碼

判斷是否已登錄

獲取登錄狀態(tài)

在入口AbilitySliceMainAbilitySlice中進(jìn)行判斷。

從數(shù)據(jù)庫獲取token的值判斷是否已經(jīng)登錄賬號(hào) (已登錄返回token,未登錄返回null)

  1. // 創(chuàng)建數(shù)據(jù)庫(這里使用官方提供的“輕量級(jí)數(shù)據(jù)存儲(chǔ)”,相關(guān)文檔:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/database-preference-guidelines-0000000000030083) 
  2. Preferences preferences = new DatabaseHelper(getApplicationContext()).getPreferences("DATA_NAME"); 
  3. //  從數(shù)據(jù)庫獲取token的值判斷是否已經(jīng)登錄賬號(hào) (已登錄返回token,未登錄返回null
  4. String token = preferences.getString("token",null); 

進(jìn)行相應(yīng)跳轉(zhuǎn)

已登錄跳轉(zhuǎn)至個(gè)人界面MyAbility,未登錄跳轉(zhuǎn)至登錄界面LoginAbility.

  1. if(token != null){ 
  2.             // 已登錄,跳轉(zhuǎn)至MyAbility 
  3.             Intent myIntent = new Intent(); 
  4.             myIntent.setParam("token", token); 
  5.             Operation myOperation = new Intent.OperationBuilder() 
  6.                     .withBundleName("cn.dsttl3.test"
  7.                     .withAbilityName("cn.dsttl3.qqlogin.MyAbility"
  8.                     .build(); 
  9.             myIntent.setOperation(myOperation); 
  10.             startAbility(myIntent); 
  11.             terminateAbility(); 
  12. }else { 
  13.             // 未登錄,跳轉(zhuǎn)至LoginAbility 
  14.             Intent loginIntent = new Intent(); 
  15.             Operation loginOperation = new Intent.OperationBuilder() 
  16.                     .withBundleName("cn.dsttl3.test"
  17.                     .withAbilityName("cn.dsttl3.qqlogin.LoginAbility"
  18.                     .build(); 
  19.             loginIntent.setOperation(loginOperation); 
  20.             startAbility(loginIntent); 
  21.             terminateAbility(); 

登錄界面的操作

申請(qǐng)網(wǎng)絡(luò)訪問權(quán)限

在config.json添加

  1. "reqPermissions": [ 
  2.       { 
  3.         "name""ohos.permission.INTERNET" 
  4.       } 
  5.     ] 

登錄界面布局文件ability_login.xml

在布局文件中添加以后webview組件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DirectionalLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent" 
  6.     ohos:alignment="center" 
  7.     ohos:orientation="vertical"
  8.  
  9.     <ohos.agp.components.webengine.WebView 
  10.         ohos:id="$+id:WebView_qqlogin" 
  11.         ohos:height="match_parent" 
  12.         ohos:width="match_parent"/> 
  13.  
  14. </DirectionalLayout> 

登錄界面的AbilitySlice LoginAbilitySlice.java

需要用到的幾個(gè)常量

  1. String state = UUID.randomUUID().toString();// 唯一標(biāo)識(shí),成功授權(quán)后回調(diào)時(shí)會(huì)原樣帶回。 
  2. String client_id = "101***151";//QQ開放平臺(tái) 應(yīng)用 APP ID 
  3. String redirect_uri = "https%3A%2F%2Fapi.dsttl3.cn%2FRedis%2FQQLogin"; //應(yīng)用 網(wǎng)站回調(diào)域 需進(jìn)行url編碼,授權(quán)成功后會(huì)跳轉(zhuǎn)至該鏈接 
  4. String authorize_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code" + 
  5.             "&client_id=" + client_id + 
  6.             "&redirect_uri=" + redirect_uri + 
  7.             "&state="+ state; 

 WebView的配置

  1. WebView myWebView = (WebView) findComponentById(ResourceTable.Id_WebView_qqlogin); 
  2.         myWebView.getWebConfig().setJavaScriptPermit(true);//支持JavaScript 
  3.         myWebView.getWebConfig().setUserAgent("android");//將UserAgent設(shè)置為安卓,授權(quán)頁才顯示QQ客戶端一鍵登錄按鈕 

自定義WebAgent

當(dāng)WebView即將打開一個(gè)鏈接時(shí)調(diào)用isNeedLoadUrl方法,當(dāng)在網(wǎng)頁上點(diǎn)擊“一鍵登錄”時(shí),打開QQ客戶端

wtloginmqq是QQ安卓客戶端URL Scheme

  1. if (request.getRequestUrl().toString().startsWith("wtloginmqq")){ 
  2.                    // 打開QQ客戶端 
  3.                    Intent qqIntent = new Intent(); 
  4.                    Operation qqOperation = new Intent.OperationBuilder() 
  5.                            .withAction("android.intent.action.VIEW"
  6.                            .withUri(Uri.parse(request.getRequestUrl().toString())) 
  7.                            .build(); 
  8.                    qqIntent.setOperation(qqOperation); 
  9.                    startAbility(qqIntent); 

因?yàn)槟壳斑€找不到網(wǎng)頁端喚起鴻蒙應(yīng)用的方法,所以QQ客戶端回調(diào)的code放在自己服務(wù)器處理。

授權(quán)成功后,會(huì)打開之前在QQ開放平臺(tái)設(shè)置的回調(diào)域redirect_uri

示例:https://api.dsttl3.cn/Redis/QQLogin?code=********&state=*****

code:QQ授權(quán)返回的code,用于申請(qǐng)token

state:在webview請(qǐng)求QQ授權(quán)頁面時(shí)傳入的唯一標(biāo)識(shí),用于判斷用戶身份,方便后續(xù)從服務(wù)器請(qǐng)求token

出于安全考慮 ,請(qǐng)求token操作放在服務(wù)器上執(zhí)行。獲取到token后將token存入數(shù)據(jù)庫,客戶端通過請(qǐng)求https://api.dsttl3.cn/Redis/Get?key= + state來獲取到token

客戶端請(qǐng)求到token后,將token存儲(chǔ)到數(shù)據(jù)庫

  1.  // 將token存入數(shù)據(jù)庫 
  2. Preferences preferences = new DatabaseHelper(getApplicationContext()).getPreferences("DATA_NAME"); 
  3. preferences.putString("token",token); 
  4. preferences.flush(); 

token存儲(chǔ)完成后跳轉(zhuǎn)至MyAbility

自定義WebAgent完整代碼

  1. myWebView.setWebAgent(new WebAgent(){ 
  2.             // 當(dāng)WebView即將打開一個(gè)鏈接時(shí)調(diào)用該方法 
  3.             @Override 
  4.             public boolean isNeedLoadUrl(WebView webView, ResourceRequest request) { 
  5.                 // request.getRequestUrl().toString() WebView即將打開的鏈接地址 
  6.                 if (request.getRequestUrl().toString().startsWith("wtloginmqq")){ 
  7.                     // 打開QQ客戶端 
  8.                     Intent qqIntent = new Intent(); 
  9.                     Operation qqOperation = new Intent.OperationBuilder() 
  10.                             .withAction("android.intent.action.VIEW"
  11.                             .withUri(Uri.parse(request.getRequestUrl().toString())) 
  12.                             .build(); 
  13.                     qqIntent.setOperation(qqOperation); 
  14.                     startAbility(qqIntent); 
  15.                     // 向自己的服務(wù)器請(qǐng)求token 
  16.                     new Thread(new Runnable() { 
  17.                         @Override 
  18.                         public void run() { 
  19.                             while (true){ 
  20.                                 String getTokenURL = "https://api.dsttl3.cn/Redis/Get?key=" + state; 
  21.                                 try { 
  22.                                     OkHttpClient client = new OkHttpClient(); 
  23.                                     Request request = new Request.Builder().url(getTokenURL).build(); 
  24.                                     String token = client.newCall(request).execute().body().string(); 
  25.                                     if (token.length() == 32){ 
  26.                                         getUITaskDispatcher().asyncDispatch(new Runnable() { 
  27.                                             @Override 
  28.                                             public void run() { 
  29.                                                 // 將token存入數(shù)據(jù)庫 
  30.                                                 Preferences preferences = new DatabaseHelper(getApplicationContext()).getPreferences("DATA_NAME"); 
  31.                                                 preferences.putString("token",token); 
  32.                                                 preferences.flush(); 
  33.                                                 // 跳轉(zhuǎn)至用戶界面 
  34.                                                 Intent myIntent = new Intent(); 
  35.                                                 Operation myOperation = new Intent.OperationBuilder() 
  36.                                                         .withBundleName("cn.dsttl3.test"
  37.                                                         .withAbilityName("cn.dsttl3.qqlogin.MyAbility"
  38.                                                         .build(); 
  39.                                                 myIntent.setOperation(myOperation); 
  40.                                                 startAbility(myIntent); 
  41.                                                 terminateAbility(); 
  42.                                             } 
  43.                                         }); 
  44.                                         break; 
  45.                                     } 
  46.                                     Time.sleep(1500); 
  47.                                 } catch (IOException e) { 
  48.                                     e.printStackTrace(); 
  49.                                 } 
  50.                             } 
  51.                         } 
  52.                     }).start(); 
  53.                     return false
  54.                 } 
  55.                 return true
  56.             } 
  57.         }); 

加載網(wǎng)頁

  1. myWebView.load(authorize_url); 

LoginAbilitySlice.java完整代碼

  1. import cn.dsttl3.qqlogin.ResourceTable; 
  2. import ohos.aafwk.ability.AbilitySlice; 
  3. import ohos.aafwk.content.Intent; 
  4. import ohos.aafwk.content.Operation; 
  5. import ohos.agp.components.webengine.ResourceRequest; 
  6. import ohos.agp.components.webengine.WebAgent; 
  7. import ohos.agp.components.webengine.WebView; 
  8. import ohos.data.DatabaseHelper; 
  9. import ohos.data.preferences.Preferences; 
  10. import ohos.miscservices.timeutility.Time
  11. import ohos.utils.net.Uri; 
  12. import okhttp3.OkHttpClient; 
  13. import okhttp3.Request; 
  14. import java.io.IOException; 
  15. import java.util.UUID; 
  16.  
  17. public class LoginAbilitySlice extends AbilitySlice { 
  18.  
  19.     //QQ開放平臺(tái)登錄授權(quán)文檔 https://wiki.connect.qq.com/%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c_oauth2-0 
  20.     String state = UUID.randomUUID().toString();// 唯一標(biāo)識(shí),成功授權(quán)后回調(diào)時(shí)會(huì)原樣帶回。 
  21.     String client_id = "101547151";//QQ開放平臺(tái) 應(yīng)用 APP ID 
  22.     String redirect_uri = "https%3A%2F%2Fapi.dsttl3.cn%2FRedis%2FQQLogin"; //應(yīng)用 網(wǎng)站回調(diào)域 需進(jìn)行url編碼,授權(quán)成功后會(huì)跳轉(zhuǎn)至該鏈接 
  23.     String authorize_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code" + 
  24.             "&client_id=" + client_id + 
  25.             "&redirect_uri=" + redirect_uri + 
  26.             "&state="+ state; 
  27.     @Override 
  28.     public void onStart(Intent intent) { 
  29.         super.onStart(intent); 
  30.         super.setUIContent(ResourceTable.Layout_ability_login); 
  31.         WebView myWebView = (WebView) findComponentById(ResourceTable.Id_WebView_qqlogin); 
  32.         myWebView.getWebConfig().setJavaScriptPermit(true); 
  33.         myWebView.getWebConfig().setUserAgent("android"); 
  34.         myWebView.setWebAgent(new WebAgent(){ 
  35.             // 當(dāng)WebView即將打開一個(gè)鏈接時(shí)調(diào)用該方法 
  36.             @Override 
  37.             public boolean isNeedLoadUrl(WebView webView, ResourceRequest request) { 
  38.                 // request.getRequestUrl().toString() WebView即將打開的鏈接地址 
  39.                 if (request.getRequestUrl().toString().startsWith("wtloginmqq")){ 
  40.                     // 打開QQ客戶端 
  41.                     Intent qqIntent = new Intent(); 
  42.                     Operation qqOperation = new Intent.OperationBuilder() 
  43.                             .withAction("android.intent.action.VIEW"
  44.                             .withUri(Uri.parse(request.getRequestUrl().toString())) 
  45.                             .build(); 
  46.                     qqIntent.setOperation(qqOperation); 
  47.                     startAbility(qqIntent); 
  48.                     // 向自己的服務(wù)器請(qǐng)求token 
  49.                     new Thread(new Runnable() { 
  50.                         @Override 
  51.                         public void run() { 
  52.                             while (true){ 
  53.                                 String getTokenURL = "https://api.dsttl3.cn/Redis/Get?key=" + state; 
  54.                                 try { 
  55.                                     OkHttpClient client = new OkHttpClient(); 
  56.                                     Request request = new Request.Builder().url(getTokenURL).build(); 
  57.                                     String token = client.newCall(request).execute().body().string(); 
  58.                                     if (token.length() == 32){ 
  59.                                         getUITaskDispatcher().asyncDispatch(new Runnable() { 
  60.                                             @Override 
  61.                                             public void run() { 
  62.                                                 // 將token存入數(shù)據(jù)庫 
  63.                                                 Preferences preferences = new DatabaseHelper(getApplicationContext()).getPreferences("DATA_NAME"); 
  64.                                                 preferences.putString("token",token); 
  65.                                                 preferences.flush(); 
  66.                                                 // 跳轉(zhuǎn)至用戶界面 
  67.                                                 Intent myIntent = new Intent(); 
  68.                                                 Operation myOperation = new Intent.OperationBuilder() 
  69.                                                         .withBundleName("cn.dsttl3.test"
  70.                                                         .withAbilityName("cn.dsttl3.qqlogin.MyAbility"
  71.                                                         .build(); 
  72.                                                 myIntent.setOperation(myOperation); 
  73.                                                 startAbility(myIntent); 
  74.                                                 terminateAbility(); 
  75.                                             } 
  76.                                         }); 
  77.                                         break; 
  78.                                     } 
  79.                                     Time.sleep(1500); 
  80.                                 } catch (IOException e) { 
  81.                                     e.printStackTrace(); 
  82.                                 } 
  83.                             } 
  84.                         } 
  85.                     }).start(); 
  86.                     return false
  87.                 } 
  88.                 return true
  89.             } 
  90.         }); 
  91.         myWebView.load(authorize_url); 
  92.     } 

個(gè)人界面

獲取token信息

  1. Preferences preferences = new DatabaseHelper(getApplicationContext()).getPreferences("DATA_NAME"); 
  2. String token = preferences.getString("token",null); 

 更新Text數(shù)據(jù)

  1. Text text = findComponentById(ResourceTable.Id_text_helloworld); 
  2. text.setText(token); 

后續(xù)操作

獲取用戶信息請(qǐng)參考QQ開放平臺(tái)文檔 https://wiki.connect.qq.com/get_user_info

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載

https://harmonyos.51cto.com/resource/1554

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2015-11-05 16:44:37

第三方登陸android源碼

2015-01-20 17:01:30

Android源碼QQdemo

2014-07-23 08:55:42

iOSFMDB

2025-06-26 08:15:00

JustAuth

2025-02-05 10:19:24

2024-03-04 10:36:39

2011-12-20 14:23:15

MozillaBrower ID

2019-07-30 11:35:54

AndroidRetrofit

2021-03-03 09:42:26

鴻蒙HarmonyOS圖片裁剪

2018-09-30 15:18:29

2021-08-26 16:07:46

鴻蒙HarmonyOS應(yīng)用

2021-03-01 14:00:11

鴻蒙HarmonyOS應(yīng)用

2017-12-11 15:53:56

2016-10-21 14:09:10

2009-12-31 14:38:34

Silverlight

2019-09-03 18:31:19

第三方支付電商支付行業(yè)

2021-08-03 10:07:41

鴻蒙HarmonyOS應(yīng)用

2017-03-14 13:03:18

Android架構(gòu)第三方庫

2021-03-12 16:35:33

鴻蒙HarmonyOS應(yīng)用

2021-03-24 09:30:49

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

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

婷婷中文字幕一区三区| 成人的网站免费观看| 日韩视频免费看| 韩国三级在线看| 性欧美freesex顶级少妇| 国产女同性恋一区二区| 高清国产在线一区| 黄色av网站免费观看| 日韩在线综合| 亚洲国产中文字幕在线观看| 亚洲怡红院在线| 爱啪视频在线观看视频免费| 国产亚洲一二三区| 国产精品我不卡| 91福利免费视频| 国产亚洲一级| 色综合久久中文字幕综合网小说| 最新中文字幕av| 精品精品国产毛片在线看| 欧美日韩国产片| www一区二区www免费| 91cn在线观看| 国产精品美女久久久久久| 国产一区二区三区免费不卡| 国产女主播福利| 日韩av一级电影| 欧美亚洲午夜视频在线观看| 人妻人人澡人人添人人爽| 国产一区毛片| 亚洲精品自拍视频| 稀缺呦国内精品呦| 国产精品视频首页| 69p69国产精品| 天天操天天爱天天爽| 竹内纱里奈兽皇系列在线观看 | 91精品国产91综合久久蜜臀| 久久午夜夜伦鲁鲁一区二区| 男人av在线播放| 亚洲福利一区二区| 97免费视频观看| 中文字幕有码在线观看| 国产精品第13页| 亚洲精品一区二| 91在线品视觉盛宴免费| 国产清纯白嫩初高生在线观看91| 蜜桃麻豆91| 青青国产在线| 国产亚洲精品资源在线26u| 欧美精品二区三区四区免费看视频| 韩国中文字幕hd久久精品| 久久国内精品视频| 国产中文字幕91| 国产在成人精品线拍偷自揄拍| 日本午夜精品一区二区三区电影 | 国产91在线亚洲| 中文字幕有码在线视频| 亚洲自拍与偷拍| 欧美又粗又长又爽做受| av手机免费在线观看| 亚洲午夜影视影院在线观看| 久久久久久久久久网| 国产乱码午夜在线视频| 欧美性生交大片免费| 日本成人在线免费视频| 国产精品第一| 日韩一区二区三区电影在线观看| 黑人巨大猛交丰满少妇| 国产精品18hdxxxⅹ在线| 亚洲国产精品悠悠久久琪琪| 日本高清www| 日韩电影二区| 美女福利视频一区| 久久露脸国语精品国产91| 欧美一级播放| 成人免费福利在线| 丁香花免费高清完整在线播放 | 国产三级黄色片| 国产精品传媒精东影业在线| 久久久精品在线观看| 免费在线观看国产精品| 99热免费精品| 国产免费亚洲高清| 国产日韩免费视频| 99久久精品国产一区二区三区| 欧美视频观看一区| 黄色网在线免费看| 精品电影在线观看| 中文字幕 日韩 欧美| 国产成人精品福利| 一区二区三区国产视频| 久久久精品99| 日韩不卡一区二区| 国产精品12| 97电影在线看视频| 亚洲va国产天堂va久久en| 一级在线免费视频| 亚洲成av人片在线观看www| 亚洲精品在线观看www| 日本中文字幕免费在线观看| 亚洲影视综合| 97超碰人人模人人爽人人看| 青草久久伊人| 亚洲综合区在线| 亚洲 激情 在线| 日韩在线你懂的| 久久综合亚洲社区| 精品一区二三区| 99在线视频精品| 日韩最新中文字幕| 欧美free嫩15| 欧美精品一区二| 成人无码精品1区2区3区免费看 | 一级中文字幕一区二区| 99视频免费播放| 日韩高清成人在线| 欧美激情亚洲精品| 96日本xxxxxⅹxxx17| 国产亚洲精品免费| 97国产精东麻豆人妻电影 | 水蜜桃亚洲一二三四在线| rebdb初裸写真在线观看| 欧美一区二区三区喷汁尤物| 亚洲色图 激情小说| 午夜一区不卡| 久久久久se| 8x8ⅹ拨牐拨牐拨牐在线观看| 欧美精品乱码久久久久久按摩| 人妻大战黑人白浆狂泄| 99精品视频免费观看| 国产99午夜精品一区二区三区 | 天天摸天天干天天操| 亚洲欧美韩国综合色| 中文字幕av不卡在线| jiujiure精品视频播放| 国产不卡在线观看| 邻家有女韩剧在线观看国语| 欧美日韩在线影院| 中文人妻一区二区三区| 日韩一级网站| 精品亚洲一区二区三区四区五区高| 中文字幕在线观看播放| 日韩欧美视频在线| 久久r这里只有精品| 国产成人免费在线观看| 国产精品久久久影院| 精品网站999| 久久亚洲精品毛片| 国产免费久久久| 一区二区三区四区精品在线视频| 人妻巨大乳一二三区| 国产一区视频在线观看免费| 产国精品偷在线| 俄罗斯一级**毛片在线播放| 337p日本欧洲亚洲大胆精品| 天天操天天摸天天干| 91免费观看视频在线| 成年网站在线免费观看| 国产精品欧美三级在线观看| 国产精品视频网址| 毛片av在线| 日韩精品一区二| 日韩av黄色片| 久久精品这里都是精品| 国产福利影院在线观看| 日韩免费视频| 成人情视频高清免费观看电影| 美女尤物在线视频| 亚洲精品动漫久久久久| 婷婷激情五月综合| 一区在线观看免费| 韩国三级视频在线观看| 亚洲国产日本| 日韩三级在线播放| 国产不卡精品| 91高清视频免费| www.国产精品.com| 欧美成人bangbros| 国产精品21p| 亚洲三级在线免费观看| 白嫩情侣偷拍呻吟刺激 | 亚洲欧美激情一区二区三区| 在线看片日韩| 亚洲v欧美v另类v综合v日韩v| 国产一区一区| 热久久免费国产视频| 日本在线观看www| 欧美精品一区二区三区蜜臀 | 欧美一区二区三区四区久久| 欧美三日本三级少妇99| 欧美激情一区二区在线| 美女伦理水蜜桃4| 可以免费看不卡的av网站| 97超碰免费观看| 亚洲伊人春色| 不卡一卡2卡3卡4卡精品在| av日韩亚洲| 欧美丰满老妇厨房牲生活 | 色愁久久久久久| 成人av色在线观看| 中文字幕在线中文字幕在线中三区| 久久久国产影院| 蜜桃视频在线观看视频| 欧美白人最猛性xxxxx69交| 黄色av网站免费| 午夜精品福利久久久| 林心如三级全黄裸体| 91网站最新网址| 黄页网站在线看| 久久91精品久久久久久秒播| 黄色片视频在线免费观看| 女生裸体视频一区二区三区| 日本一区二区三区视频免费看| av日韩精品| 91在线无精精品一区二区| 欧美影视资讯| 欧美一区三区三区高中清蜜桃| 宅男网站在线免费观看| 色综合伊人色综合网| 欧美亚洲日本| 亚洲国产精品电影| 国产丰满果冻videossex| 欧美午夜一区二区三区| 手机看片久久久| 亚洲成a人在线观看| 波多野结衣爱爱视频| 亚洲欧洲性图库| 97人妻人人揉人人躁人人| 久久夜色精品国产欧美乱极品| caopor在线| 国产盗摄精品一区二区三区在线| 午夜一区二区视频| 免费成人美女在线观看| 99视频在线免费| 天堂一区二区在线免费观看| 亚洲熟妇国产熟妇肥婆| 亚洲精品一二| 六月婷婷在线视频| 日韩午夜免费| www.99热这里只有精品| 在线欧美日韩| 国产精品一区二区免费在线观看| 亚洲精品乱码| 日本福利视频在线| 美女黄色成人网| 日韩精品一区二区三区不卡 | 偷窥少妇高潮呻吟av久久免费| 国产精品久久久久久久精| 亚洲欧美视频在线观看视频| 三级影片在线看| 一区二区三区在线观看视频| 欧美日韩三级在线观看| 夜夜嗨av一区二区三区| 国产在线视频你懂的| 午夜电影网一区| 精品人妻无码一区二区性色 | 国产av无码专区亚洲a∨毛片| 欧美一卡二卡在线观看| 亚洲精品无amm毛片| 亚洲精品电影网| 国产高清在线看| 日韩中文字幕国产| 91网址在线观看| 91国在线精品国内播放 | 亚洲最大福利网站| 2020最新国产精品| 久久99国产精品99久久| 国产精品一线天粉嫩av| 国产精品亚洲天堂| 在线欧美一区| 黄色av免费在线播放| 精品综合免费视频观看| 少妇熟女视频一区二区三区 | 亚洲一二区在线| 夜间精品视频| 水蜜桃色314在线观看| 久久狠狠婷婷| 午夜免费视频网站| 99久久综合国产精品| 精品熟妇无码av免费久久| 亚洲永久免费av| av片免费观看| 日韩欧美一级在线播放| 欧美欧美欧美| 久久影院中文字幕| 午夜裸体女人视频网站在线观看| 国产精品视频免费在线观看| 91麻豆精品国产91久久久久推荐资源| 麻豆传媒一区| 欧美.www| 中文字幕第36页| 成人性生交大片免费看中文网站| 国产成人福利在线| 亚洲一区二区三区四区中文字幕| 69av视频在线观看| 精品嫩草影院久久| 日韩大片在线永久免费观看网站| 欧美极品少妇xxxxⅹ免费视频| 成人在线视频观看| 精品中文字幕人| 欧美~级网站不卡| 在线黄色免费观看| 91蜜桃视频在线| 九九热精彩视频| 欧美色综合网站| 午夜性色福利影院| 欧美成人一二三| 国产第一亚洲| 久久青青草原一区二区| 国产精品magnet| 中文字幕 日韩 欧美| 国产午夜精品久久| 免费毛片一区二区三区| 欧美一区二区三区性视频| 国产精品四虎| 日本久久91av| 欧美激情99| 欧洲精品在线播放| 国产乱人伦偷精品视频不卡| 免费一级特黄3大片视频| 精品久久中文字幕久久av| 亚洲国产一二三区| 久久久精品日本| 成人短视频软件网站大全app| 色播亚洲婷婷| 老司机精品福利视频| 玖草视频在线观看| 午夜精品福利一区二区蜜股av| 亚洲国产999| 欧美另类精品xxxx孕妇| 四虎影视成人精品国库在线观看| 欧美午夜视频在线| 久久综合图片| 国产三级国产精品| 狠狠色狠色综合曰曰| 午夜av免费在线观看| 久久久久久有精品国产| 哺乳挤奶一区二区三区免费看 | 看黄色录像一级片| 91激情在线视频| 国产人成在线视频| 国产精品人人做人人爽| 精品国产一区二区三区噜噜噜| 日韩在线xxx| 久久久影视传媒| 奴色虐av一区二区三区| 国产小视频国产精品| 久久精品嫩草影院| 一区二区三区久久网| 九色综合狠狠综合久久| 日韩激情综合网| 日韩精品最新网址| 国产精品探花在线| 精品免费日产一区一区三区免费| 国产亚洲精品v| 亚洲最大成人综合网| 欧美日韩中文字幕精品| 国产二区三区在线| 国产精品一区二区欧美| 99精品99| 久久丫精品忘忧草西安产品| 欧美日韩激情一区二区三区| 国产精品扒开做爽爽爽的视频| 91牛牛免费视频| 在线精品亚洲| 久久亚洲无码视频| 欧美二区在线观看| 欧美xxxx黑人又粗又长| 久久久免费看| 麻豆国产精品一区二区三区| 久久中文免费视频| 亚洲精品美女网站| 成人做爰视频www| 成人高清dvd| 久久综合久久综合久久| 一级日韩一级欧美| 欧美极品少妇xxxxⅹ裸体艺术| 综合伊思人在钱三区| 免费成年人高清视频| 一级女性全黄久久生活片免费| 秋霞av在线| 亚洲在线视频福利| 校园春色综合网| 麻豆视频在线免费看| 亚洲精品久久视频| 欧美97人人模人人爽人人喊视频| 老司机激情视频| 国产日产欧美精品一区二区三区| 国产乱淫av免费| 2019中文字幕在线| 91精品国产乱码久久久久久| 欧美日韩一区二区三区四区五区六区| 日韩欧美亚洲成人| 18在线观看的| 欧美一区二区影视| 国产91丝袜在线18| 亚洲第一区av| 91sao在线观看国产| 91av精品| 男人天堂资源网| 精品一区二区三区四区在线|