国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

快速實(shí)現(xiàn) GitHub、QQ 第三方登錄方式

共 11939字,需瀏覽 24分鐘

 ·

2021-05-05 00:29

程序員的成長(zhǎng)之路
互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享 
關(guān)注


閱讀本文大概需要 6.5 分鐘。

文章作者: Jitwxs

文章鏈接: https://jitwxs.cn/33ad9e35.html

本文提及第三方登錄涉及到 OAuth2.0,關(guān)于 OAuth2.0 的理論基礎(chǔ)參考阮一峰老師的《理解 OAuth 2.0》,其中關(guān)于授權(quán)碼模式就是本篇文章的重點(diǎn),如想看這篇理論基礎(chǔ)自行百度即可。

本文著重于代碼,關(guān)于理論不再贅述,關(guān)于不同公司的三方登錄流程,只要遵循 OAuth2.0 規(guī)范,都大同小異。本文介紹 GitHub 和 QQ 兩種,因?yàn)檫@兩種無(wú)需審核,即可食用。

一、GitHub 登錄

1.1 注冊(cè)應(yīng)用

進(jìn)入 Github 的 Setting 頁(yè)面,點(diǎn)擊 Developer settings,如圖所示:

進(jìn)入后點(diǎn)擊 New Oauth App,如圖所示:

在其中填寫(xiě)主頁(yè) URL 和 回調(diào) URL,回調(diào) URL 尤為重要,如果不太明白可以先和我一致。

點(diǎn)擊注冊(cè)后,上方會(huì)生成 Client ID 和 Client Secret,這兩個(gè)后面要用到。

1.2 HTML 頁(yè)面

頁(yè)面十分簡(jiǎn)單,只有兩個(gè)跳轉(zhuǎn)鏈接:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>三方登錄</title>
</head>
<body>
    <h1>三方登錄Demo</h1>
    <div>
        <a href="/githubLogin">GitHub登錄</a>
        <a href="/qqLogin">QQ登錄</a>
    </div>
</body>
</html>

1.3 Github 登錄方法

在這個(gè)方法中,我們需要訪問(wèn) GitHub 的認(rèn)證服務(wù)器,使用 Get 請(qǐng)求,這里使用重定向來(lái)實(shí)現(xiàn)。

遵循 Oauth 2.0 規(guī)范,需要攜帶以下參數(shù):

  • response_type :對(duì)于授權(quán)碼模式,該值固定為 code
  • client_id :注冊(cè)應(yīng)用時(shí)的 Client ID
  • state :回調(diào)時(shí)會(huì)原樣返回
  • redirect_uri : 回調(diào) URL,注冊(cè)應(yīng)用時(shí)填寫(xiě)的

這里的 state 參數(shù)我要額外說(shuō)明下,因?yàn)樵搮?shù)會(huì)在后面的回調(diào) URL 中被原樣攜帶回來(lái),絕大多數(shù)的開(kāi)發(fā)者會(huì)忽略該字段,阮一峰老師的文章也沒(méi)有著重提及這一點(diǎn)。但是忽略該參數(shù)是會(huì)導(dǎo)致 CSRF攻擊的,在回調(diào)函數(shù)中應(yīng)當(dāng)對(duì)該字段進(jìn)行校驗(yàn)!

關(guān)于如何校驗(yàn),我一開(kāi)始的想法是使用 session 來(lái)存儲(chǔ) state 進(jìn)行校驗(yàn)的,但是我發(fā)現(xiàn)使用重定向后 session 不是同一個(gè) session,方案一失敗。

然后我想通過(guò) ajax 請(qǐng)求,在頁(yè)面中使用 window.location.href 方法跳轉(zhuǎn)到認(rèn)證服務(wù)器,使用 session 存儲(chǔ),但是很不幸這樣也不是同一個(gè) session,方案二失敗。

最后我的解決辦法是使用 redis 緩存,使用 set 存儲(chǔ),回調(diào)時(shí)判斷是否存在。當(dāng)然你也可以用 HashMap 來(lái)存儲(chǔ),這也是一個(gè)解決辦法。

關(guān)于 Redis,可以參考:https://jitwxs.cn/e331e26a.html

private static String GITHUB_CLIENT_ID = "0307dc634e4c5523cef2";
private static String GITHUB_CLIENT_SECRET = "707647176eb3bef1d4c2a50fcabf73e0401cc877";
private static String GITHUB_REDIRECT_URL = "http://127.0.0.1:8080/githubCallback";

@RequestMapping("/githubLogin")
public void githubLogin(HttpServletResponse response) throws Exception {
  // Github認(rèn)證服務(wù)器地址
  String url = "https://github.com/login/oauth/authorize";
  // 生成并保存state,忽略該參數(shù)有可能導(dǎo)致CSRF攻擊
  String state = oauthService.genState();
  // 傳遞參數(shù)response_type、client_id、state、redirect_uri
  String param = "response_type=code&" + "client_id=" + GITHUB_CLIENT_ID + "&state=" + state
          + "&redirect_uri=" + GITHUB_REDIRECT_URL;
  
  // 1、請(qǐng)求Github認(rèn)證服務(wù)器
  response.sendRedirect(url + "?" + param);
}

1.4 Github 回調(diào)方法

在上一步中,瀏覽器會(huì)被跳轉(zhuǎn)到 Github 的授權(quán)頁(yè),當(dāng)用戶(hù)登錄并點(diǎn)擊確認(rèn)后,GitHub認(rèn)證服務(wù)器會(huì)跳轉(zhuǎn)到我們填寫(xiě)的回調(diào)URL中,我們?cè)诔绦蛑刑幚砘卣{(diào)。

在回調(diào)方法中,步驟如下:

1. 首先驗(yàn)證 state 與發(fā)送時(shí)是否一致,如果不一致,可能遭遇了 CSRF 攻擊。

2. 得到 code,向 GitHub 認(rèn)證服務(wù)器申請(qǐng)令牌(token)

  這一步使用模擬的 POST 請(qǐng)求,攜帶參數(shù)包括:

  • grant_type :授權(quán)碼模式固定為 authorization_code
  • code :上一步中得到的 code
  • redirect_uri :回調(diào)URL
  • client_id :注冊(cè)應(yīng)用時(shí)的Client ID
  • client_secret :注冊(cè)應(yīng)用時(shí)的Client Secret

3. 得到令牌(access_token)和令牌類(lèi)型(token_type),向GitHub資源服務(wù)器獲取資源(以 user_info 為例)

這一步使用模擬的 GET 請(qǐng)求,攜帶參數(shù)包括:

  • access_token :令牌
  • token_type :令牌類(lèi)型

4. 輸出結(jié)果

/**
 * GitHub回調(diào)方法
 * @param code 授權(quán)碼
 * @param state 應(yīng)與發(fā)送時(shí)一致
 * @author jitwxs
 * @since 2018/5/21 15:24
 */

@RequestMapping("/githubCallback")
public void githubCallback(String code, String state, HttpServletResponse response) throws Exception {
    // 驗(yàn)證state,如果不一致,可能被CSRF攻擊
    if(!oauthService.checkState(state)) {
        throw new Exception("State驗(yàn)證失敗");
    }

    // 2、向GitHub認(rèn)證服務(wù)器申請(qǐng)令牌
    String url = "https://github.com/login/oauth/access_token";
    // 傳遞參數(shù)grant_type、code、redirect_uri、client_id
    String param = "grant_type=authorization_code&code=" + code + "&redirect_uri=" +
            GITHUB_REDIRECT_URL + "&client_id=" + GITHUB_CLIENT_ID + "&client_secret=" + GITHUB_CLIENT_SECRET;

    // 申請(qǐng)令牌,注意此處為post請(qǐng)求
    String result = HttpClientUtils.sendPostRequest(url, param);

    /*
     * result示例:
     * 失?。篹rror=incorrect_client_credentials&error_description=The+client_id+and%2For+client_secret+passed+are+incorrect.&
     * error_uri=https%3A%2F%2Fdeveloper.github.com%2Fapps%2Fmanaging-oauth-apps%2Ftroubleshooting-oauth-app-access-token-request-errors%2F%23incorrect-client-credentials
     * 成功:access_token=7c76186067e20d6309654c2bcc1545e41bac9c61&scope=&token_type=bearer
     */

    Map<StringString> resultMap = HttpClientUtils.params2Map(result);
    // 如果返回的map中包含error,表示失敗,錯(cuò)誤原因存儲(chǔ)在error_description
    if(resultMap.containsKey("error")) {
        throw  new Exception(resultMap.get("error_description"));
    }

    // 如果返回結(jié)果中包含access_token,表示成功
    if(!resultMap.containsKey("access_token")) {
        throw  new Exception("獲取token失敗");
    }

    // 得到token和token_type
    String accessToken = resultMap.get("access_token");
    String tokenType = resultMap.get("token_type");

    // 3、向資源服務(wù)器請(qǐng)求用戶(hù)信息,攜帶access_token和tokenType
    String userUrl = "https://api.github.com/user";
    String userParam = "access_token=" + accessToken + "&token_type=" + tokenType;
    
    // 申請(qǐng)資源
    String userResult = HttpClientUtils.sendGetRequest(userUrl, userParam);

    // 4、輸出用戶(hù)信息
    response.setContentType("text/html;charset=utf-8");
    response.getWriter().write(userResult);
}

二、QQ 登錄

2.1 注冊(cè)應(yīng)用

進(jìn)入 QQ 互聯(lián)管理中心:https://connect.qq.com/manage.html,創(chuàng)建一個(gè)新應(yīng)用(需要先審核個(gè)人身份):

然后注冊(cè)應(yīng)用信息,和 GitHub 的步驟大差不差:

注冊(cè)后,可以看到應(yīng)用的 APP ID、APP Key,以及你被允許的接口,當(dāng)然只有一個(gè)獲取用戶(hù)信息。

官方開(kāi)發(fā)文檔點(diǎn)擊這里:

http://wiki.connect.qq.com/%E5%BC%80%E5%8F%91%E6%94%BB%E7%95%A5_server-side

注意:審核狀態(tài)為審核中和審核失敗也是可以使用的,不用擔(dān)心(只是無(wú)法實(shí)際上線而已,作為 Demo 足夠了)。

2.2 QQ 登錄方法

private static String QQ_APP_ID = "101474821";
private static String QQ_APP_KEY = "00d91cc7f636d71faac8629d559f9fee";
private static String QQ_REDIRECT_URL = "http://127.0.0.1:8080/qqCallback";

@RequestMapping("/qqLogin")
public void qqLogin(HttpServletResponse response) throws Exception {
    // QQ認(rèn)證服務(wù)器地址
    String url = "https://graph.qq.com/oauth2.0/authorize";
    // 生成并保存state,忽略該參數(shù)有可能導(dǎo)致CSRF攻擊
    String state = oauthService.genState();
    // 傳遞參數(shù)response_type、client_id、state、redirect_uri
    String param = "response_type=code&" + "client_id=" + QQ_APP_ID + "&state=" + state
            + "&redirect_uri=" + QQ_REDIRECT_URL;

    // 1、請(qǐng)求QQ認(rèn)證服務(wù)器
    response.sendRedirect(url + "?" + param);
}

2.3 QQ 回調(diào)方法

/**
 * QQ回調(diào)方法
 * @param code 授權(quán)碼
 * @param state 應(yīng)與發(fā)送時(shí)一致
 * @author jitwxs
 * @since 2018/5/21 15:24
 */

@RequestMapping("/qqCallback")
public void qqCallback(String code, String state, HttpServletResponse response) throws Exception {
    // 驗(yàn)證state,如果不一致,可能被CSRF攻擊
    if(!oauthService.checkState(state)) {
        throw new Exception("State驗(yàn)證失敗");
    }

    // 2、向QQ認(rèn)證服務(wù)器申請(qǐng)令牌
    String url = "https://graph.qq.com/oauth2.0/token";
    // 傳遞參數(shù)grant_type、code、redirect_uri、client_id
    String param = "grant_type=authorization_code&code=" + code + "&redirect_uri=" +
            QQ_REDIRECT_URL + "&client_id=" + QQ_APP_ID + "&client_secret=" + QQ_APP_KEY;

    // 申請(qǐng)令牌,注意此處為post請(qǐng)求
    // QQ獲取到的access token具有3個(gè)月有效期,用戶(hù)再次登錄時(shí)自動(dòng)刷新。
    String result = HttpClientUtils.sendPostRequest(url, param);

    /*
     * result示例:
     * 成功:access_token=A24B37194E89A0DDF8DDFA7EF8D3E4F8&expires_in=7776000&refresh_token=BD36DADB0FE7B910B4C8BBE1A41F6783
     */

    Map<StringString> resultMap = HttpClientUtils.params2Map(result);
    // 如果返回結(jié)果中包含access_token,表示成功
    if(!resultMap.containsKey("access_token")) {
        throw  new Exception("獲取token失敗");
    }
    // 得到token
    String accessToken = resultMap.get("access_token");

    // 3、使用Access Token來(lái)獲取用戶(hù)的OpenID
    String meUrl = "https://graph.qq.com/oauth2.0/me";
    String meParams = "access_token=" + accessToken;
    String meResult = HttpClientUtils.sendGetRequest(meUrl, meParams);
    // 成功返回如下:callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );
    // 取出openid
    String openid = getQQOpenid(meResult);

    // 4、使用Access Token以及OpenID來(lái)訪問(wèn)和修改用戶(hù)數(shù)據(jù)
    String userInfoUrl = "https://graph.qq.com/user/get_user_info";
    String userInfoParam = "access_token=" + accessToken + "&oauth_consumer_key=" + QQ_APP_ID + "&openid=" + openid;
    String userInfo = HttpClientUtils.sendGetRequest(userInfoUrl, userInfoParam);

    // 5、輸出用戶(hù)信息
    response.setContentType("text/html;charset=utf-8");
    response.getWriter().write(userInfo);
}

/**
 * 提取Openid
 * @param str 形如:callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );
 * @author jitwxs
 * @since 2018/5/22 21:37
 */

private String getQQOpenid(String str) {
    // 獲取花括號(hào)內(nèi)串
    String json = str.substring(str.indexOf("{"), str.indexOf("}") + 1);
    // 轉(zhuǎn)為Map
    Map<StringString> map = JsonUtils.jsonToPojo(json, Map.class);
    return map.get("openid");
}

三、項(xiàng)目源碼

QQ 登錄的具體流程我就不啰嗦了,都差不多。代碼只列出了關(guān)鍵方法,具體程序還包含工具類(lèi)和 redis 的配置。具體請(qǐng)參考文章開(kāi)頭源碼,該項(xiàng)目采用 SpringBoot 搭建,需要 Redis 支持。

<END>

推薦閱讀:

代碼總是被嫌棄寫(xiě)的太爛?裝上這個(gè)IDEA插件再試試!

SpringBoot 集成 Shiro 極簡(jiǎn)教程(實(shí)戰(zhàn)版)

最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

獲取方式:點(diǎn)個(gè)「在看」,點(diǎn)擊上方小卡片,進(jìn)入公眾號(hào)后回復(fù)「面試題」領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

朕已閱 

瀏覽 25
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 成人精品在线观看| 拍拍AV| 夜夜操天天干| 2025av天堂网| 国产中文字幕波多| sm视频网站| 中文字幕三级av片| 911亚洲精品| 日韩有码电影| 日韩av高清| 西欧超碰在线| 亚洲一区色| 女生自慰在线观看| 国语对白做受欧美| 无码偷拍| 免费成人视频| 亚洲精品自拍偷拍| 国产精品国产三级国产专区52| 全部视频午夜寂寞| 无码免费看| www.男人天堂| 国产成人精品久久久| AV第一福利大全导航| 免费无码高清| 91麻豆成人| 亚洲成人视频网站| 国产激情无码视频| 欧美亚洲黄片| 日本乱伦视频| 欧美性爱视频免费看| 欧美老熟妇乱大交XXXXX| 丝袜美腿亚洲综合| 亚洲无码AV一区二区三区| 亚洲av播放| 成人免费视频国产免费麻豆,| 欧美XXX视频| 亚洲一区二区精品| 日本无码在线视频| 久久精品www人人爽人人| 在线观看的av网站| 亚洲a片在线观看| 天天操电影| 中文无码字幕在线| 青娱乐成人在线| 国产口爆在线观看| 无码在线观看免费视频| 视色网站| 麻豆性爱视频| 操逼a片| 男人天堂色男人| 操逼在线播放| 中文三级片| 黄色成人网站在线| 亚洲国产精品久久| 日韩AV免费看| 亚洲热在线观看| 高清无码视频在线免费观看| 久操视频网| 九九国产精品| 国产午夜成人福利在线| 天天射天天| 日韩性爱在线| 精品国产va久久久久久| 欧美性视频网站| 亚洲夜夜爱| 444444免费高清在线观看电视剧的注意| 操屄视频播放| 99久久久久久久无码| 婷婷玖玖| 蜜桃在线无码| 久爱无码| 肏逼综合网| 特黄AAAAAAAA片免费直播| 九九天堂| 一级性爽A√毛片| 91农村站街老熟女露脸| 亚洲加勒比在线| 日韩免费视频一区二区| 91国产爽黄| 人人妻人人干| 亚洲午夜福利| 亚洲无码AV麻豆| 黄片91| 婷婷好色五月天| 思思热在线视频精品| 91人妻人人澡人人爽人人DVD | 99精品无码| 曰韩毛片| 黄色www| www.黄| 曰本中文字幕在线视频| 成人免费毛片果冻日本| 一级A片久久久免费直播间| 91天天在线| 日本亚洲国产| 天天天天天天天干| 一区成人| 大屌色| 特极西西444WWW大胆无码| 黄片大全在线观看| 夜夜骚AV一二三区无码| 成人aV免费观看| 九九九九AV| h在线网站| 日韩色情电影| 免费Av在线| 无码在线观看免费视频| 99热免费观看| 久久er热| 国产高清在线| 国产传媒AV| 亚洲视频A| 日韩日批视频| 欧美日本中文字幕| 亚洲欧洲日韩| 成人免费视频18| 中文字幕在线视频观看| 国产操逼免费看| 亚洲精品久久久久毛片A级牛奶 | 亚洲激情| 美女裸体视频网站| 欧美在线A| 日韩AV无码成人精品| 中文在线字幕免费观看| 国产精品久久久久久久久久九秃| 黄色片网站在线观看| 国产一级一片免费播放放a| 日产久久久| 国精品无码一区二区三区在线 | 欧美成人综合一区| 亚洲欧美日韩动漫| 国产婷婷色| 九九视频在线观看| 91视频亚洲| 9991区二区三区四区| 97精品人妻一区| 新BBWBBWBBWBBW| 日韩啊v| 逼特逼视频在线观看| 中文字幕+乱码+中文乱码www| 91综合网| 91国产视频网站| 一区二区三区四区| 亚洲成人内射| 免费黄色视频大全| 欧美日韩一| 国产综合色婷婷精品久久| 久久久久亚洲AV无码专区成人 | 久久免费操| 开心五月色婷婷综合开心网| 精品美女视频| 臭小子晚上让你爽个够视频| 中文字幕在线日韩| 日本成片网| 国产女人18水真多18精品| 成人在线三级片| 欧洲成人在线视频| 日韩久久精品| 麻豆91免费视频| 中文字幕婷婷五月天| 国产99久久久| 爱搞视频在线播放| 有码中文字幕| 超碰在线网| 俺来也俺去也www色官| 免费看黄色的视频| 婷婷五月天在线播放| 波多野结衣无码视频| 天堂无码视频在线播放| 国产又爽又黄A片| 老熟妇一区二区三区啪啪| 暗呦网一区二区三区| 欧美经典自拍狼友| 无码欧美精品一区二区| 黑人精品| 国产精品久久精品| 就要操| 免费的黄色片| 91色区| A视频在线免费观看| 亚洲免费无码视频| 大香伊人国产| 国产在线一| 国产激情福利| 91免费在线视频| 日本少妇高潮喷水XXXXXXX| 国产激情在线| 中文字幕亚洲区| 日韩群交| 91成人一区二区| 天天高清无码| 久久国内视频| av天堂手机网| 国产无遮挡又黄又爽又色视频| 久久伊人精品| 五月婷婷色| 操女人的网站| 一本色综合亚洲精品| 黄色片a| 日本黄色影视| 国产精品久久久久无码AV| 色噜噜AV| 成人A毛片| 超碰2021| 91成人在线播放| 久久大鸡吧| 少妇搡BBBB搡BBB搡打电话| 操B影院| 亚洲无码专区在线观看| 亚洲成人精品少妇| 重庆美女揉BBBB搡BBBB| 亚洲免费网站| 大蕉伊人网| 国产精品成人一区二区| 你懂的视频在线观看| 青草成人在线| 日产电影一区二区三区| 狠狠操在线| 西西www444无码大胆| 人妻少妇精品无码| 成人免费黄色| 草免费视频| 四川少妇搡bbw搡bbbb| 国产激情视频在线播放| 日韩精品欧美一区二区三区| 亚洲天堂AV在线观看| 国产精品a久久久久| 天天操操操| 激情五月天开心网| 国产又大又粗| 日韩精品| 国产真实乱婬A片久久久老牛| 超碰A片| 亚洲天堂在线播放| 91国内产香蕉| 亚洲永久视频| 麻豆蜜桃wwww精品无码| 日本精品在线播放| 青草精品视频| 欧美成人中文字幕| 狠狠操免费视频| 怡红院av| 五月一区| 第九色| 国产AV高清| 韩国gogogo高清在线完整版| 人妻操| 在线无码视频播放| 精品无套| 黄色福利视频在线观看| 丰满人妻一区二区三区蜜桃视频| 国产精品视频一区二区三| 中文字幕精品一级A片| 爱搞搞网| 日本一级特黄电影| 亚洲无码中文字幕在线| 日韩午夜成人电影| 亚洲人妻无码在线| 91日逼| 日本亚洲视频| 国产一区二区免费| 久久这里只有| 天天操天天射天天爽| 蝌蚪窝免费在线视频| 玖玖激情| 日本黄色电影网址| 亚洲香蕉视频网站| 五月婷婷激情综合| 亚洲九九| 国内自拍视频网| h片免费观看| 久久无码影视| 国产精品免费观看久久久久久久久 | 国产在线拍偷自揄拍无码一区二区 | а√最新版在线中文8| 欧美777| 国产精品囯产三级囯产AV野外| 精品人妻午夜一区二区三区四区 | 国产精品理论片| 日韩成人高清无码| 久久亚洲Aⅴ成人无码国产丝袜| 婷婷精品秘进入| 操操AV| 国产免费AV片在线无码免费看| 亚洲欧洲精品视频| 日日夜夜精品视频| 久久久久无码国产精品一区| 无码AV大香线蕉伊人| 黑人AV在线播放| 国产夫妻在线视频| 日韩欧AV| 欧美日韩免费在线| 99热9| 亚洲天堂在线看| 欧美精产国品一二三| 北京熟妇搡BBBB搡BBBB电影 | 欧美夜夜爽| 欧洲黄网| 国产成人精品123区免费视频| 欧美成人精品无| 精品人妻一区二区三区在线视频不卡 | 2024国产精品| 草逼网站| 无码蜜桃一区二区| www亚洲无码A片贴吧| 亚洲高清毛片一区二区| 亚洲日韩av在线| 国产成人免费观看视频| 国产真实乱婬A片三区高清蜜臀 | 青青草黄色片| 91麻豆精品传媒| 翔田千里无码流出两部| 国产一区二区三区在线观看免费视频免费视频免费视频 | 麻豆91免费看| AV2014天堂网| 少妇被躁到高潮无码| 色色色欧美| 亚洲无码天堂| 久久精品久久久久久久| 开心激情站| 日韩一区不卡| 中文字幕在线观看第一页| 三级黄色免费网站| 一级性爱视频| 亚洲少妇熟女| 亚洲视频免费| 欧美日韩在线看| 亚洲在线免费观看| 青青草在线免费视频| 五月天干美女| 国产美女一级真毛片酒店| 亚洲欧美美国产| 欧美亚洲综合在线| 国产一级a毛一级a做免费的视频l 精品国产免费观看久久久_久久天天 | 亚洲精品无码电影| 99热在线观看者| 国产黄页| 北条麻妃久久久| 免费a片在线观看| 日韩AV无码一区二区| 天堂一区二区| 大香蕉这里只有精品| 婷婷在线视频| 日本久久视频| 色婷婷视频一区二区| 五月天成人网址| 黄色一级在线| 国内老熟妇对白HDXXXX| a日韩| 欧美日韩免费在线观看| 大鸡吧操视频| 超碰大香蕉| 成人高清无码在线| 日韩精品欧美一区二区三区| 青青视频网| 91成人综合| 北条麻妃99| 波多野结衣福利视频| 日本不卡一区二区三区| 蜜桃传媒入口| 99热1| 婷婷综合久久| 先锋影音一区二区三区| 97人妻精品一区二区三区视频 | 日韩AV电影网| 高清无码电影| 婷婷五月综合中文字幕| 天天综合视频| 午夜福利小视频| 亚洲A网站| 国产17c精品视频一二三区| 国产凹凸视频在线观看| 在线观看免费无码视频| 美日韩在线| 色婷婷天天操天天干| 翔田千里无码破解| 色色色免费视频| 日本免费黄色片| 在线男人天堂| 久久性爱视频| 久久久久一| 国产伦精品一区二区三区色大师| 亚洲无码系列| 天堂a√在线8| 亚洲中文字幕人妻。| 国产一a毛一a毛A免费| jzzijzzij亚洲成熟少妇在线观看 九色蝌蚪9l视频蝌蚪9l视频成人熟妇 | 国产成人无码精品| 中国1级毛片| 99热这里只有精品1| 97伊人大香蕉| 欧美成人一区二区三区| 自拍偷拍av| 四库影库| 爱操视频| 亚洲精选一区二区三区| 91麻豆精品91久久久久同性| 天天添天天干| 成人黄网站免费视频| 香蕉黄色三级片| 偷拍亚洲欧美| 2017天天干天天射| 黄色片在线免费观看| 欧美第一色| 国产精品无码乱伦| 久久精品视频在线| 亚洲色图片区| 按摩性高湖婬AAA片A片中国| 亚洲日本欧美| 老女人网站| 色就是欧美| 久久77| 人人干视频| 日韩操逼一区| 亚洲人妻电影| 亚洲午夜久久久久久久久| 人妻少妇91精品一区黑人| 黄色激情视频网站| 一区二区三区不卡在线| 国产激情视频在线免费观看| 色图欧美色图| 久久艹伊人| 中文无码日韩| 最近中文字幕免费MV第一季歌词怀孕| 美女做爱视频网站| 欧美欧美欧美| A片小视频| 日韩精品视频一区二区三区| 影音先锋AV成人| 碰碰97| 中文字幕在线不卡视频| 热久久视频| 69精品视频| 日本高清无码在线| 加勒比国产在线| 殴殴美日韩在线| 四虎精品一区二区| 丁香六月久久| 人人草人人搞| 亚洲色图在线视频| 久久婷婷六月| 国产成人内射| 精品视频在线播放| 亚洲国产天堂| 日韩在线二区| 在线观看高清无码中文字幕| 操屄视频在线观看| 成人免费网站黄| 国产1024在线| 欧美一区二区三区四区视频 | 操b视频免费| 亚洲午夜福利| 亚洲成人福利| 成人高清无码在线| gogogo免费高清在线偷拍| 日本不卡一区| 911精品国产一区二区在线| 夜间福利视频| 九九热播精品| 特级西西人体WWWww| 亚洲天堂日本| 十八无码成人免费网站| av干在线| 99视频在线观看免费| 日日艹夜夜艹| 欧美老妇BBBBBBBBB| 无码国产精品一区二区三| 玖玖大香蕉| 日韩免费AV电影| 国产免费网址| 国产你懂的| 亚洲无码视频在线看| 操美女视频网站| 黄色成人网站大全| 日韩三区| 丁香婷婷色| 亚洲操色| 国产91在线拍揄自揄拍无码九色| 中文字幕乱码免费综合久久| 精品一区二区视频| 四虎AV在线| av天堂资源| 精品一区二区三区毛片| 日韩精品一区二区三区使用方法| 日本一区二区三区免费观看| 免费人成视频在线播放| 日韩精品成人AV| 一区二区三区不卡视频| 18禁网站免费| 免费日韩无码| 噜噜噜AV| 亚洲无码高清在线观看视频| 日本无码一区二区三区| 三级黄色毛片| 亚洲网站免费观看| 日本天天色| 底流量AV电影在线| 亚洲一级A片| wwwAV| 夜夜爱视频| 91福利影院| AV你懂得| 欧美一卡二卡三卡| 国产黄片免费在线观看| 黑人AV在线观看| 国产精品免费久久| AV狠狠干| 乱伦天堂| 亚洲黄色在线视频| 亚洲美女在线观看| 黄片视频观看| 亚洲无遮挡| 激情导航| 激情视频网站| 操久久久| 国产精品秘久久久久久1-~/\v7-/ 囯产精品一区二区三区线一牛影视1 | 成人AV电影在线观看| 无码人妻一区二区三区| 亚洲视频在线免费播放| 老熟妇搡BBBB搡BBBB| 日韩精品极品视频在线观看免费 | 超碰成人免费| 欧美性爱小说网| 亚洲色图片区| 91aV视频| 日韩V欧美| 国产欧美在线不卡| 久久丁香| 特级西西WWW444人体聚色| 高清无码二区| 亚洲色鬼| 动漫3D成人H无码国漫| 日本三级黄色视频| 激情一区| 婷婷五月在线视频| 囯产精品久久久久久久久| AA片视频| 18精品爽国产冫绿帽社| 韩国无码中文| 日韩精品无码av| 玩弄大乳乳妾高潮乳喷视频| 黄色成人在线| 成人网| 91丨九色丨老农村| 北条麻妃波多波多野结衣| 99爱爱视频| 伊人影院在线免费观看| 伊人综合电影| 无码高清在线观看| 狠狠干网| 国产激情网| 欧美成人午夜福利| 国产TS在线| 中文字幕成人网站| 日韩国产三级| 成人无码99| 亚洲色色视频| 中文字幕av在线| 人成视频在线观看| 东京热AV在线| 亚洲图片一区| 嫩BBB槡BBBB槡BBBB视频-百度 | 亚洲精品中文字幕在线观看| 大香蕉色伊人| 北条麻妃91人妻互换| 蜜臀av网站| 天天操大香蕉| 国产真人一级a爱做片| 熟女探花精选| 亚洲一区二区三区无码| 99综合网| 久久午夜无码鲁丝片| 中文字幕在线观看不卡| 一区二区三区免费在线观看| 色播一区| 永久av| av不卡在线观看| jzzijzzij亚洲成熟少妇在线观看| 亚洲中文视频在线| 18禁网站网址| 香蕉漫画在线观看18| 麻豆一区二区| 无码中文字幕在线观看| 天天日天天舔| 久操视频网| 99自拍| 97午夜| 国产精品成人在线| 不卡不在线中文| 免费观看黄色视频网站| 性爱日韩| 97国产精品久久| 美女特黄视频| 北条麻妃91视频| 草久在线观看| 日韩极品在线观看| 天堂视频中文在线| 国产精品H| 天天搞天天色| 天干夜操| 天天干天天操综合| 国产非洲欧美在线| 中文字幕免费在线看一区七区| 成人视频网| 亚洲视屏| 日韩AV免费在线观看| 亚洲最大黄色| 午夜福利码一区二区| 日韩一区二区三区在线| 国产性生活| 麻豆A∨在线| 最近2021中文字幕免费| www.av91| 国精产品一品二品国精| 午夜成人AV| 伊人影院在线视频| av手机版| 欧美国产日本| 国产成人精品二三区麻豆| 不卡视频一区二区| 秋霞午夜视频| 欧美另类色| 肏屄视频免费| 亚洲国产无码在线| 十八禁无码网站在线观看| 91污| 色五月av| 亚洲欧美日本在线观看| 亚洲美女一区| 免费黄片视频在线观看| 躁BBB躁BBB躁BBBBB乃 | 欧美在线视频99| 69无码| 国产精品国产伦子伦露看| 97超碰人人| 黄色视频在线观看免费| 国产口爆| 朝鲜性感AV在线| 成人AV在线电影| 影视先锋成人在线| 97人妻碰碰中文无码久热丝袜| 欧美久久国产精品| 黄色电影天堂网站| 欧美福利电影| 91网站在线免费观看| 精品国产久久久久| 九热视频| 亚洲日本三级| 伊人成人在线视频观看| 99久久国产热无码精品免费 | 国产成人小视频| 无码一区二区三区在线| 免费看一级无码成人片| 亚洲免费无码视频| 欧美干| 色玉米地熟妇| 欧美不卡在线播放| 婷婷久草网| 天天综合网站| 日韩av无码中文字幕| 欧美一级生活片| 欧美亚洲国产一区二区三区| 99国产免费| 麻豆精品秘国产| 男人的天堂在线播放| 超碰福利在线| 日本无码免费视频| 67194熟女| 色五月综合| 亚洲操操操| 免费中文字幕日韩欧美| 男人天堂AV片| 欧美成人色| YOUjiZZ欧美大全| 亚洲无码中文字幕视频| 免费一区视频| 中文字幕va| 谁有毛片网址| 国产三级在线观看视频| 在线有区别亚洲| 少妇毛片| 无码人妻视频| 免费操逼| 国产精品超碰| 淫香欲色| 中文字幕成| 88无码| 欧美老女人性爱视频| 日韩A√| 在线黄色小视频| 人妻视频网| www.日韩精品| 超级碰碰碰碰碰碰碰碰碰| 亚洲精品无码人妻| 欧美一级日韩三级| 精品国精品自拍自在线| 国产AV无码专区| 手机看片1024国产| 久久韩国| 亚洲人妻少妇| 免费在线观看黄色视频网站| 一区二区三区免费| 老太奶性BBwBBw侧所| 噜噜| 啪啪视频在线观看| 男女av免费| 青草国产视频| 日韩高清毛片| 中文字字幕在线中文乱码电影| 日韩黄色片| 久久无码影视| AV电影在线免费观看| 人人干人人妻| 国产成人精品一区二| aaa免费视频| 中文天堂| 99视频精品| 在线成人小视频| 亚洲日韩在线视频播放| 日韩AV电影网站| 91久热| 看毛片网址| 色欲99| 淫荡五月天视频导航| 不卡精品| 爱爱爱网址| 亚洲成人精品一区二区| 国产三级在线观看视频| 51成人网| 亚洲AV无码乱码| 性饥渴欧美老妇XXXXX| 亚洲电影免费观看| 免费黄色视频网站在线观看| 亚洲黄片大全| 99视频精品在线| 欧美一区二区无码视频| 少妇性视频| 国产精品嫩草久久久久yw193| 性综合网| 国产日韩欧美一区二区| 91.xxxxx| 色视频在线观看| 一级黄色影院| 99在线精品视频观看| 免费中文字幕av| 91欧美视频| 欧美视频一区二区| 欧美黄色网| 99re视频播放| 亚洲福利网| 激情爱爱网| 欧美一区二区三区精品| 国产做受91一片二片老头| 久久久久久久久久久久久自慰小片| 人人妻人人玩澡人人爽| 成人在线H| 亚洲精品中文字幕在线观看| 爆乳一区二区| 中文字幕无码视频| 国产高清精品在线| 亚洲天堂婷婷| wwwAV| 亚洲资源在线观看| 亚洲AV无码第一区二区三区蜜桃 | 1204手机看片| 日本做爱视频| 日韩精品一二三| 中文字幕婷婷| 嫖中国站街老熟女HD| 日韩日批视频| 欧美精品一卡| 99精品视频在线播放免费| 西西掰穴| 先锋影音男人资源站| 黄视频免费| 亚洲另类色图| 人人色人人色| 人人干AV| 狠狠干综合网| 黑人人妻黑人ThePorn| 91豆花视频18| 婷婷玖玖| 欧美日韩在线视频免费| 一本色道久久综合狠狠躁的推荐| 色色成人网| 人人操夜夜| 97视频精品| 日本一本不卡| 免费看一区二区三区A片| 91黄在线观看| 欧美69影院| 一级片视频在线观看| 91人妻人人澡人人爽人| 天堂无码视频在线播放| 国产亚洲精品久久久久久桃色| 大香蕉伊人在线网| 亚洲黄色视频网站| 亚洲午夜AV| 成人亚洲欧美| 日韩高清毛片| 日本久久久久久久久视频在线观看 | 国产丝袜人妖TS系列| 偷拍视频网站| 兔子先生和優奈玩游戲脫衣服,運氣報表優奈輸到脫精光 | 国产免费一区二区三区最新不卡| 久久系列观看完整指南| 久久成人在线| 日韩色综合| 国产你懂的| 久久久久久亚洲AV黄床| 成人在线毛片| 人人干人人澡| 午夜啪啪网站| 欧美熟妇高潮流白浆| 91精品免费视频| 在线无码播放| 亚洲无码黄色片| 亚洲无码在线视频观看| 夜夜操天天干| 免费日本A片| 国产无码三级| 国产h在线观看| 亚洲伊人av| 激情综合在线| 亚洲精品国产成人综合久久久久久久久| 欧美日韩一| 人人操97| 天堂网中文| 亚洲高清无码视频在线观看 | 精品国产A片| 操逼视频免费在线观看| 日本午夜三级视频| 风流老熟女一区二区三区| 日韩人妻精品无码| 懂色AV| 精品国产一级| 精品成人A片久久久久久不卡三区| 欧美午夜精品| AV国产高清| 亚洲图片小说区| 中文字幕av在线播放| 强奸五月天| 成年人视频在线免费观看| 亚洲播播| 久久久久久亚洲AV黄床| 国产AV影片| 国产乱子伦日B视频| 日本欧美中文字幕| AV小说在线观看| 成人精品无码| 免费av中文字幕| 懂色av蜜臀av粉嫩av分享| www.三级| www.91在线视频| 亚洲偷拍网| 日韩在线不卡| 色资源在线观看| 最近2019中文字幕mv第三季歌词| 激情一区| 久久永久免费| 少妇人妻无码| 亚洲国产剧情| 老女人网站| 日韩国产av| 亚洲AV资源在线| 国产AV影片| 日韩A片一级无码免费蜜桃| 欧美性爱AAA| 国产精品国产精品国产专区不| 操碧一区| 国产亚洲欧美视频| 先锋影音AV资源网| 一级无码A片| 91黄色视频网站| 亚洲免费观看高清| 国产激情综合在线| 国产黄A| 中文字幕av高清片,中文在线观看| 欧美三级无码| 华女与黑人91A∨| 亚洲无码手机在线| 亚洲中文字幕在线视频观看 | 九九精品视频在线播放| 欧美色色网| 国产成人777777精品综合| 夜夜狠狠躁日日躁| 性猛交╳XXX乱大交| 狼人综合在线| 夜夜嗨老熟女AV一区二区三区| 日韩三级黄色| 无码AV大香线蕉伊人| 日本黄在线播放| 日本欧美在线视频| 天天日日天天| 免费一区视频| 大香伊人久久| 三级高清无码视频| 国产99久久九九精品无码免费| 亚洲午夜福利视频| 色欧美视频|