日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

微信扫码登录实现

發布時間:2024/1/3 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 微信扫码登录实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.前端準備

定義一個div容器,用于展示生成的二維碼

<div id="weixinLogin"></div>

安裝二維碼插件

npm install vue-qriously --save-dev

在main.js中進行引入插件

import VueQriously from 'vue-qriously'

Vue.use(VueQriously)

編寫一個微信二維碼生成插件的方法

    weixinLogin() {
      getLoginParam().then(response=>{
        varobj=newWxLogin({
        self_redirect:true,
        id:'weixinLogin',//需要顯示的容器id
        appid:response.data.appid,//公眾號appidwx*******
        scope:response.data.scope,//網頁默認即可
        redirect_uri:response.data.redirectUrl,//redirectUrl//授權成功后回調的url
        state:response.data.state,//可設置為簡單的隨機數加session用來校驗
        style:'black',//提供"black"、"white"可選。二維碼的樣式
        href:''//外部css文件url,需要https
        })
      })
    },

注意:此處需要的參數定義在后端,需要調用接口來獲取,對應接口如下

api:

const BASEURL = "/api/user/wx";
//獲取微信參數
export function getLoginParam() {
  return request({
    url: `${BASEURL}/getLoginParam/`,
    method: "get",
  });
}

2.后端實現

后端接口實現:

WX_OPEN_REDIRECT_URL為http://localhost:8160/api/user/wx/callback

這里的url即為掃描成功后跳轉的頁面

    /**
     * 獲取二維碼相關參數
     */
    @GetMapping("getLoginParam")
    @ResponseBody
    public Result getLoginParam() {
        Map<String, Object> map = new HashMap<>();
        map.put("appid", ConstantWxUtils.WX_OPEN_APP_ID);
        map.put("scope", "snsapi_login");
        //對redirect_url進行URLEncoder編碼
        String redirectUrl = ConstantWxUtils.WX_OPEN_REDIRECT_URL;
        try {
            redirectUrl = URLEncoder.encode(redirectUrl, "utf-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        map.put("redirectUrl", redirectUrl);
        map.put("response_type", "code");
        map.put("state", "Eric");
        return Result.ok(map);
    }

遠程調用微信接口可能用到的工具類

package com.gh.util;

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.RequestConfig.Builder;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.security.GeneralSecurityException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class HttpClientUtils {

    public static final int connTimeout=10000;
    public static final int readTimeout=10000;
    public static final String charset="UTF-8";
    private static HttpClient client = null;

    static {
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
        cm.setMaxTotal(128);
        cm.setDefaultMaxPerRoute(128);
        client = HttpClients.custom().setConnectionManager(cm).build();
    }

    public static String postParameters(String url, String parameterStr) throws ConnectTimeoutException, SocketTimeoutException, Exception{
        return post(url,parameterStr,"application/x-www-form-urlencoded",charset,connTimeout,readTimeout);
    }

    public static String postParameters(String url, String parameterStr,String charset, Integer connTimeout, Integer readTimeout) throws ConnectTimeoutException, SocketTimeoutException, Exception{
        return post(url,parameterStr,"application/x-www-form-urlencoded",charset,connTimeout,readTimeout);
    }

    public static String postParameters(String url, Map<String, String> params) throws ConnectTimeoutException,
            SocketTimeoutException, Exception {
        return postForm(url, params, null, connTimeout, readTimeout);
    }

    public static String postParameters(String url, Map<String, String> params, Integer connTimeout,Integer readTimeout) throws ConnectTimeoutException,
            SocketTimeoutException, Exception {
        return postForm(url, params, null, connTimeout, readTimeout);
    }

    public static String get(String url) throws Exception {
        return get(url, charset, null, null);
    }

    public static String get(String url, String charset) throws Exception {
        return get(url, charset, connTimeout, readTimeout);
    }

    /**
     * 發送一個 Post 請求, 使用指定的字符集編碼.
     *
     * @param url
     * @param body RequestBody
     * @param mimeType 例如 application/xml "application/x-www-form-urlencoded" a=1&b=2&c=3
     * @param charset 編碼
     * @param connTimeout 建立鏈接超時時間,毫秒.
     * @param readTimeout 響應超時時間,毫秒.
     * @return ResponseBody, 使用指定的字符集編碼.
     * @throws ConnectTimeoutException 建立鏈接超時異常
     * @throws SocketTimeoutException  響應超時
     * @throws Exception
     */
    public static String post(String url, String body, String mimeType,String charset, Integer connTimeout, Integer readTimeout)
            throws ConnectTimeoutException, SocketTimeoutException, Exception {
        HttpClient client = null;
        HttpPost post = new HttpPost(url);
        String result = "";
        try {
            if (StringUtils.isNotBlank(body)) {
                HttpEntity entity = new StringEntity(body, ContentType.create(mimeType, charset));
                post.setEntity(entity);
            }
            // 設置參數
            RequestConfig.Builder customReqConf = RequestConfig.custom();
            if (connTimeout != null) {
                customReqConf.setConnectTimeout(connTimeout);
            }
            if (readTimeout != null) {
                customReqConf.setSocketTimeout(readTimeout);
            }
            post.setConfig(customReqConf.build());

            HttpResponse res;
            if (url.startsWith("https")) {
                // 執行 Https 請求.
                client = createSSLInsecureClient();
                res = client.execute(post);
            } else {
                // 執行 Http 請求.
                client = HttpClientUtils.client;
                res = client.execute(post);
            }
            result = IOUtils.toString(res.getEntity().getContent(), charset);
        } finally {
            post.releaseConnection();
            if (url.startsWith("https") && client != null&& client instanceof CloseableHttpClient) {
                ((CloseableHttpClient) client).close();
            }
        }
        return result;
    }


    /**
     * 提交form表單
     *
     * @param url
     * @param params
     * @param connTimeout
     * @param readTimeout
     * @return
     * @throws ConnectTimeoutException
     * @throws SocketTimeoutException
     * @throws Exception
     */
    public static String postForm(String url, Map<String, String> params, Map<String, String> headers, Integer connTimeout,Integer readTimeout) throws ConnectTimeoutException,
            SocketTimeoutException, Exception {

        HttpClient client = null;
        HttpPost post = new HttpPost(url);
        try {
            if (params != null && !params.isEmpty()) {
                List<NameValuePair> formParams = new ArrayList<NameValuePair>();
                Set<Entry<String, String>> entrySet = params.entrySet();
                for (Entry<String, String> entry : entrySet) {
                    formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
                }
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formParams, Consts.UTF_8);
                post.setEntity(entity);
            }

            if (headers != null && !headers.isEmpty()) {
                for (Entry<String, String> entry : headers.entrySet()) {
                    post.addHeader(entry.getKey(), entry.getValue());
                }
            }
            // 設置參數
            Builder customReqConf = RequestConfig.custom();
            if (connTimeout != null) {
                customReqConf.setConnectTimeout(connTimeout);
            }
            if (readTimeout != null) {
                customReqConf.setSocketTimeout(readTimeout);
            }
            post.setConfig(customReqConf.build());
            HttpResponse res = null;
            if (url.startsWith("https")) {
                // 執行 Https 請求.
                client = createSSLInsecureClient();
                res = client.execute(post);
            } else {
                // 執行 Http 請求.
                client = HttpClientUtils.client;
                res = client.execute(post);
            }
            return IOUtils.toString(res.getEntity().getContent(), "UTF-8");
        } finally {
            post.releaseConnection();
            if (url.startsWith("https") && client != null
                    && client instanceof CloseableHttpClient) {
                ((CloseableHttpClient) client).close();
            }
        }
    }

    /**
     * 發送一個 GET 請求
     */
    public static String get(String url, String charset, Integer connTimeout,Integer readTimeout)
            throws ConnectTimeoutException,SocketTimeoutException, Exception {

        HttpClient client = null;
        HttpGet get = new HttpGet(url);
        String result = "";
        try {
            // 設置參數
            Builder customReqConf = RequestConfig.custom();
            if (connTimeout != null) {
                customReqConf.setConnectTimeout(connTimeout);
            }
            if (readTimeout != null) {
                customReqConf.setSocketTimeout(readTimeout);
            }
            get.setConfig(customReqConf.build());

            HttpResponse res = null;

            if (url.startsWith("https")) {
                // 執行 Https 請求.
                client = createSSLInsecureClient();
                res = client.execute(get);
            } else {
                // 執行 Http 請求.
                client = HttpClientUtils.client;
                res = client.execute(get);
            }

            result = IOUtils.toString(res.getEntity().getContent(), charset);
        } finally {
            get.releaseConnection();
            if (url.startsWith("https") && client != null && client instanceof CloseableHttpClient) {
                ((CloseableHttpClient) client).close();
            }
        }
        return result;
    }

    /**
     * 從 response 里獲取 charset
     */
    @SuppressWarnings("unused")
    private static String getCharsetFromResponse(HttpResponse ressponse) {
        // Content-Type:text/html; charset=GBK
        if (ressponse.getEntity() != null  && ressponse.getEntity().getContentType() != null && ressponse.getEntity().getContentType().getValue() != null) {
            String contentType = ressponse.getEntity().getContentType().getValue();
            if (contentType.contains("charset=")) {
                return contentType.substring(contentType.indexOf("charset=") + 8);
            }
        }
        return null;
    }

    /**
     * 創建 SSL連接
     * @return
     * @throws GeneralSecurityException
     */
    private static CloseableHttpClient createSSLInsecureClient() throws GeneralSecurityException {
        try {
            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                public boolean isTrusted(X509Certificate[] chain,String authType) throws CertificateException {
                    return true;
                }
            }).build();

            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() {

                @Override
                public boolean verify(String arg0, SSLSession arg1) {
                    return true;
                }

                @Override
                public void verify(String host, SSLSocket ssl)
                        throws IOException {
                }

                @Override
                public void verify(String host, X509Certificate cert)
                        throws SSLException {
                }

                @Override
                public void verify(String host, String[] cns,
                                   String[] subjectAlts) throws SSLException {
                }
            });
            return HttpClients.custom().setSSLSocketFactory(sslsf).build();

        } catch (GeneralSecurityException e) {
            throw e;
        }
    }
}

View Code

微信掃碼登錄回調

注意:掃碼登錄會自動獲取一個隨機code,這個code是微信發給用戶的臨時令牌。我們可以根據code再次請求微信第三方登陸接口得到access_token(正式令牌)

/**
     * 微信掃碼登錄回調
     */
    @GetMapping("callback")
    public String callback(String code, String state) {
        //拿著臨時票據code和微信id和密鑰,請求微信固定地址,得到兩個值accessToken和openId
        //使用code和appid以及appscrect換取access_token
        StringBuffer baseAccessTokenUrl = new StringBuffer()
                .append("https://api.weixin.qq.com/sns/oauth2/access_token")
                .append("?appid=%s")
                .append("&secret=%s")
                .append("&code=%s")
                .append("&grant_type=authorization_code");

        String accessTokenUrl = String.format(baseAccessTokenUrl.toString(),
                ConstantWxUtils.WX_OPEN_APP_ID,
                ConstantWxUtils.WX_OPEN_APP_SECRET,
                code);//替換url中的值
        try {
            String accessTokenInfo = HttpClientUtils.get(accessTokenUrl);
            JSONObject jsonObject = JSONObject.parseObject(accessTokenInfo);
            String access_token = jsonObject.getString("access_token");
            String openid = jsonObject.getString("openid");
            //判斷數據庫是否存在掃描人信息
            UserInfo userInfo = userInfoService.findByOpenId(openid);
            if (userInfo == null) {
                //拿著access_token和openid去請求微信地址,得到掃描人信息
                String baseUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo" +
                        "?access_token=%s" +
                        "&openid=%s";
                String userInfoUrl = String.format(baseUserInfoUrl, access_token, openid);
                String resultUserInfo = HttpClientUtils.get(userInfoUrl);
                JSONObject object = JSONObject.parseObject(resultUserInfo);
                //解析用戶信息(頭像,昵稱等等)
                String headimgurl = object.getString("headimgurl");
                String nickname = object.getString("nickname");
                //添加數據庫
                userInfo = new UserInfo();
                userInfo.setNickName(nickname);
                userInfo.setOpenid(openid);
                userInfo.setStatus(1);
                userInfoService.insert(userInfo);
            }
            //返回name和token字符串
            Map<String, Object> map = new HashMap<>();
            String name = userInfo.getName();
            if (StringUtils.isEmpty(name)) {
                name = userInfo.getNickName();
            }
            if (StringUtils.isEmpty(name)) {
                name = userInfo.getPhone();
            }
            map.put("name", name);
            //  前端判斷openid不為空,需要綁定手機號,如果為空不要綁定手機號
            if (StringUtils.isEmpty(userInfo.getPhone())) {
                map.put("openid", openid);
            } else {
                map.put("openid", "");
            }
            String token = JwtHelper.createToken(userInfo.getId(), name);
            map.put("token", token);
            return "redirect:" + ConstantWxUtils.YYGH_BASE_URL + "/weixin/callback?token="+map.get("token")+"&openid="+map.get("openid")+"&name="+URLEncoder.encode((String)map.get("name"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

注意:上述方法返回值是一個前端vue頁面,這個頁面作為一個中間頁面callback.vue,用來獲取返回攜帶的參數。

<template>
<!--header-->
<div>
</div>
<!--footer-->
</template>
<script>
exportdefault{
// layout:"empty",
data(){
return{
}
},
mounted(){
lettoken=this.$route.query.token
letname=this.$route.query.name
letopenid=this.$route.query.openid
//調用父vue方法
window.parent['loginCallback'](name,token,openid)
}
}
</script>

在父組件進行接收:

mounted(){
    //微信回調的方法
    letself=this;
window["loginCallback"]=(name,token,openid)=>{
self.loginCallback(name,token,openid);
}
}
判斷openid是否為空,如果不為空,需要綁定手機號,如果為空不要綁定手機號
    loginCallback(name,token,openid){
      console.log("openid="+openid)
      if(openid!=null){
        this.userInfo.openid=openid
        this.showLogin()
      }else{
        this.setCookies(name,token)
      }
    },

把name和token存在cookie

    setCookies(name, token) {
      cookie.set("token", token, { domain: "localhost" });
      cookie.set("name", name, { domain: "localhost" });
      window.location.reload();
    }

#MySignature {
display: block;
background-color: #95FFE9;
border-radius: 7px;
box-shadow: 1px 1px 1px #6B6B6B;
padding: 10px;
line-height: 1.5;
text-shadow: 1px 1px 1px #FFF;
font-size: 16px;
}
#MySignature a {
margin: 0;
padding: 0;
display: contents;
}

一點點學習,一絲絲進步。不懈怠,才不會被時代所淘汰!

總結

以上是生活随笔為你收集整理的微信扫码登录实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

又长又大又黑又粗欧美 | 亚洲久草在线 | 欧美精品做受xxx性少妇 | 黄色一级大片在线免费看国产一 | 91视频在线观看下载 | 涩涩爱夜夜爱 | 亚洲午夜精品一区 | 精品视频免费看 | 久久久久久久久久福利 | 黄色大片国产 | 韩国三级av在线 | 最近最新最好看中文视频 | 天堂网一区二区 | 久久影视网 | 在线观看视频免费播放 | 婷婷激情五月 | 五月婷婷丁香综合 | 亚洲国产精品成人综合 | av在线影视 | 成人av教育 | a在线观看免费视频 | 亚洲 av网站 | 国产精品一区欧美 | 不卡的av在线 | 人人藻人人澡人人爽 | 日韩91在线 | 中文字幕久久亚洲 | 久久久久国产免费免费 | 九色精品免费永久在线 | 9999激情 | 亚洲成人午夜在线 | 一区二区视频免费在线观看 | 99精品免费在线 | 久久福利影视 | 成人羞羞视频在线观看免费 | 欧美日韩中文视频 | 五月激情六月丁香 | 不卡国产视频 | 五月天婷婷在线视频 | 欧美成人在线网站 | 91视频com| 日韩深夜在线观看 | 亚洲日本国产精品 | 国产美女网 | 久久精品在线视频 | 密桃av在线 | 午夜精品久久久 | 综合网五月天 | 韩国在线一区二区 | 在线观看亚洲视频 | 日本精品视频一区 | 一区二区三区免费播放 | 亚洲高清在线视频 | 深夜国产在线 | 蜜臀av一区二区 | 免费成人短视频 | 中文字幕在线日亚洲9 | 日本黄色免费电影网站 | 国产精品美女久久久久久网站 | 日韩免费一区二区三区 | 精品理论片| 高清不卡毛片 | 欧美日韩国产精品一区二区 | 亚洲丁香久久久 | 99re久久资源最新地址 | 亚洲精品资源在线观看 | 久久99国产精品 | 亚州性色 | 精品三级av | 狠狠插天天干 | 日日爽夜夜操 | 国产亚洲精品日韩在线tv黄 | 免费亚洲精品 | 久一在线 | 国产91在线观看 | 精品a级片| 久久久久久国产一区二区三区 | 免费在线激情电影 | 国产电影黄色av | 夜夜爽88888免费视频4848 | 欧美 日韩精品 | 国产精品va视频 | 免费在线一区二区 | 国产精品日韩 | 国产v在线 | 韩国av免费观看 | 超碰日韩在线 | 99在线热播精品免费 | 日韩视频在线播放 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久精品久久精品久久 | 中文字幕精品www乱入免费视频 | av成人免费网站 | 国内精品久久影院 | 国产成人av免费在线观看 | 日韩三级久久 | 国产视频一二三 | 日韩久久久久 | 成人污视频在线观看 | 色综合久久88色综合天天人守婷 | 国产xxxx做受性欧美88 | 日韩v在线91成人自拍 | 综合激情婷婷 | 黄色一级大片在线观看 | 一区二区成人国产精品 | 日韩色综合| 免费一级片视频 | 亚洲成成品网站 | 亚洲人片在线观看 | 欧美一级片在线 | 婷婷在线不卡 | 国产精品综合久久久久久 | 97精品国产97久久久久久久久久久久 | 麻豆视频免费在线播放 | 狠狠狠狠狠狠狠 | 久久精品专区 | 国产高清久久 | 欧美日韩在线视频一区 | 在线免费三级 | 国产91精品一区二区麻豆亚洲 | 亚洲激情 欧美激情 | 色婷婷免费视频 | 亚洲理论在线观看 | 午夜国产福利在线 | 欧美激情综合五月色丁香小说 | 日韩国产在线观看 | 91看片黄色| 日韩有码专区 | 国产精品亚洲成人 | 成 人 黄 色视频免费播放 | 97色综合| 成人羞羞视频在线观看免费 | 成人黄色av网站 | 婷婷中文字幕 | 亚洲色综合 | 最近在线中文字幕 | 91丨九色丨国产女 | 中文字幕在线视频免费播放 | 国产91在| 亚洲人在线 | 国产在线观看黄 | www日韩在线 | 国产精品成人一区 | 在线观看日韩精品 | 九九免费精品视频在线观看 | 久久久久久草 | 日韩久久精品一区二区三区下载 | 久久视频国产 | 午夜美女视频 | 成人毛片一区 | 亚洲精品tv久久久久久久久久 | 免费男女网站 | 97超碰在线资源 | 91电影福利| 天天综合网在线观看 | 欧美午夜精品久久久久久孕妇 | 欧美日韩国产在线精品 | 精品久久久久久久久久久久 | 午夜电影av | 精品国产福利在线 | 日日夜夜精品免费视频 | 精品久久影院 | 91片黄在线观看 | 成年人免费av | 91九色在线观看视频 | 九九九九九九精品任你躁 | 五月天高清欧美mv | 中文字幕一区二区三区在线播放 | 久久午夜影院 | 一区二区三区观看 | 天天天天爽 | 中文字幕 国产专区 | 天天色欧美 | 中文字幕之中文字幕 | 欧美尹人 | 国产人成看黄久久久久久久久 | 国产香蕉在线 | 精品av网站 | 81国产精品久久久久久久久久 | 欧美另类人妖 | 高清av免费一区中文字幕 | 91丨porny丨九色| 日韩免费视频 | 成人资源在线 | 免费在线日韩 | 在线观看的a站 | 日韩高清成人在线 | 久久99国产综合精品 | 97人人模人人爽人人喊中文字 | 97久久精品午夜一区二区 | 亚洲精品99久久久久中文字幕 | 国产视频资源在线观看 | 日韩欧美一区二区三区视频 | www夜夜操com| 日本久久91 | 色噜噜狠狠狠狠色综合久不 | 成人av高清| 日韩精品影视 | 九九热.com| 国产婷婷精品av在线 | 天堂在线v | 人人爽人人爽人人爽人人爽 | 久久婷婷激情 | 日韩欧美电影网 | 久久情爱 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日本中文字幕在线一区 | 午夜精品久久久久久 | 日韩av网页 | 中文字幕在线看片 | 免费三级骚 | 91在线公开视频 | 一级精品视频在线观看宜春院 | 激情一区二区三区欧美 | 国产高清不卡 | 在线亚洲人成电影网站色www | 欧美国产日韩一区 | av看片在线| 国产中文 | 亚洲国产精品久久久久 | 中文字幕在线日 | 国产一区二区三区免费在线 | 99这里只有 | 香蕉免费| 91黄色免费看 | 人人干人人模 | 日韩在线中文字幕视频 | 久久久久国产免费免费 | 国产精品久久久久久久久久不蜜月 | 丰满少妇在线观看 | 久久夜夜夜 | 亚洲国产大片 | 在线观看日韩免费视频 | 狠狠久久综合 | 久久久久在线 | 国产专区第一页 | 国产综合精品一区二区三区 | 久久成人免费视频 | 激情校园亚洲 | 特级片免费看 | 天天操夜 | 日韩精品一区二区免费视频 | 三级av片 | 欧美婷婷色| 免费男女网站 | 欧美日本在线观看视频 | 99精品在线播放 | 国产黄色精品在线 | 日韩成人在线免费观看 | 不卡电影一区二区三区 | 国产小视频在线观看 | 国产午夜三级一区二区三桃花影视 | 亚洲自拍自偷 | 狠狠色噜噜狠狠 | 日韩中文幕 | 黄色特级一级片 | 国产黄色片一级三级 | 夜夜嗨av色一区二区不卡 | 国产一区二区高清视频 | 免费黄色一区 | 日韩3区| 亚州国产精品久久久 | 国产精品乱码久久久 | 日韩欧美精品在线 | 毛片1000部免费看 | 中文字幕首页 | 欧美精品一区二区三区一线天视频 | 国产日本在线观看 | 人人爽人人av | 999久久久久久久久 69av视频在线观看 | 最新av在线播放 | 国产999精品久久久影片官网 | 日日夜夜免费精品视频 | 日本精品视频免费 | 亚洲精品乱码久久久久久高潮 | 视频国产在线 | 成人在线观看资源 | 伊人黄 | 久久精品一 | 亚洲高清视频在线观看免费 | 91秒拍国产福利一区 | 国产精品久久亚洲 | 婷婷av在线 | 中文在线www | 天堂av在线免费观看 | 亚洲欧美婷婷六月色综合 | 久久久www | 亚洲精品久久久蜜桃 | 国产1区在线 | 91网在线 | 国产美女在线精品免费观看 | 欧美久久综合 | 亚洲精品久久久久久中文传媒 | 亚洲精品欧美专区 | 久久99国产精品视频 | 91成人国产 | 成人在线视频网 | 日韩动漫免费观看高清完整版在线观看 | 亚洲区精品视频 | 久久久久久久99 | 综合网天天色 | 在线播放视频一区 | 成人h电影 | 黄色毛片在线观看 | 久久精品艹 | 免费三级av| 国产黄色精品 | 久久久久免费看 | 成年美女黄网站色大片免费看 | 美女视频黄免费 | 午夜久草 | 欧美性网站 | 在线黄色av电影 | 在线99热 | 全久久久久久久久久久电影 | 色综合久久久久 | 在线观看一区二区精品 | 五月天六月色 | 成人国产综合 | 91精品啪在线观看国产线免费 | 日韩有码在线播放 | 国产男女无遮挡猛进猛出在线观看 | 亚洲午夜精品一区 | 在线 精品 国产 | 香蕉97视频观看在线观看 | 日精品| 欧美日本日韩aⅴ在线视频 插插插色综合 | 在线观看久久久久久 | 在线你懂的视频 | 91亚洲视频在线观看 | 91在线精品秘密一区二区 | 精品国产乱码一区二 | www黄在线| 日日夜夜精品免费 | 国产一性一爱一乱一交 | 91社区国产高清 | 手机成人在线电影 | 91av短视频 | 在线免费观看欧美日韩 | 欧美日韩高清在线一区 | 66av99精品福利视频在线 | av电影在线观看完整版一区二区 | 国产原创在线视频 | 国产日韩欧美中文 | 99久久久久国产精品免费 | 久久久91精品国产一区二区精品 | 2021国产视频 | 久久精品老司机 | 激情网站 | 在线观看中文 | 97韩国电影 | 中文字幕 成人 | 日韩一二区在线 | 最新久久免费视频 | 久久午夜电影网 | 国产资源免费在线观看 | 久久精品久久精品 | 久久精品视频在线观看 | 国产在线探花 | aa一级片 | 西西444www高清大胆 | 97超碰超碰久久福利超碰 | 日韩性久久| 九色91福利 | 日日爽 | 亚洲一片黄 | 国产精品久久影院 | 最近中文字幕高清字幕免费mv | 四虎影视精品成人 | 亚洲一区二区三区精品在线观看 | 91精品国产一区二区三区 | 深爱激情五月网 | 精品国产伦一区二区三区观看方式 | 亚洲精品影视在线观看 | 夜夜操综合网 | 日韩欧美精品在线观看视频 | 久久五月天婷婷 | 一区二区精品在线 | 色天天综合网 | 激情视频免费观看 | 久久免费国产 | 久久国产精品免费观看 | 五月婷社区 | 91精品秘密在线观看 | 欧美精品久久久久久久久久白贞 | 国产日韩精品在线观看 | 91久久国产自产拍夜夜嗨 | 午夜丁香视频在线观看 | 六月丁香婷 | 日韩r级在线 | 美女一级毛片视频 | 精品国产观看 | 激情五月婷婷激情 | 国产在线探花 | 99爱国产精品 | 欧美性生活久久 | av播放在线 | 久久理论视频 | 国产黄色电影 | 亚洲视屏在线播放 | 一个色综合网站 | 日韩不卡高清 | 少妇18xxxx性xxxx片 | 丁香影院在线 | 一色屋精品视频在线观看 | 欧美黄在线 | 91色国产在线| 91精品国产欧美一区二区 | 欧美在线观看小视频 | 在线观看中文字幕一区二区 | 欧美日韩xxx| 日韩亚洲国产中文字幕 | 日本黄色特级片 | 99久久99久久精品国产片果冰 | 久久亚洲婷婷 | 麻豆国产精品永久免费视频 | 亚洲精品成人网 | 天天拍天天色 | 国产精品免费一区二区三区在线观看 | 黄色av成人在线 | 亚洲电影一级黄 | 四虎影视精品成人 | 国产精品视频线看 | 日韩午夜在线观看 | 91视频专区| 国产精品理论在线观看 | 中文字幕在线播放av | 最新日韩视频 | 四虎海外影库www4hu | 国产午夜不卡 | 国产精品a成v人在线播放 | 久久精品1区 | 天天干,天天射,天天操,天天摸 | 99r在线视频 | 久久黄页| 国产精品久久久久久久久免费看 | 日韩影视大全 | 日韩久久久久久久久久 | 精品免费久久久久 | 中文字幕在线日本 | 五月婷香蕉久色在线看 | 国产在线v | 久久av在线播放 | av电影免费看 | 日韩精品久久久久 | 婷婷中文在线 | 中文字幕在线网 | 亚洲精品一区二区三区高潮 | 高潮毛片无遮挡高清免费 | 97在线视频免费观看 | 欧美激情操 | 国产精品免费看久久久8精臀av | 九九久久久久久久久激情 | 久久久久久久久久久久久9999 | 成人在线免费看视频 | 国产精品免费久久久久久久久久中文 | 天天综合网在线 | 97香蕉久久超级碰碰高清版 | 成人啪啪18免费游戏链接 | 国产裸体视频bbbbb | 久久久久久久久久久免费av | 国产精品资源在线观看 | 五月婷在线观看 | 国产一区二区三区在线免费观看 | 国产又黄又硬又爽 | 久久人人爽人人爽人人片 | 免费在线观看91 | 99久久99精品 | 激情综合电影网 | 国产69精品久久99的直播节目 | 日本99精品 | 久草电影网 | 中文字幕在线观看免费观看 | 午夜视频福利 | 综合久久精品 | 国产精品午夜在线观看 | 2019精品手机国产品在线 | 中文字幕高清有码 | 正在播放亚洲精品 | 99热在线看 | 久久久国产精华液 | 午夜av网站 | 波多野结衣网址 | 国产日产精品一区二区三区四区的观看方式 | 99热在| 精品国产一区二区三区久久久蜜臀 | 六月丁香综合网 | 激情网五月婷婷 | 久草在线免 | 日韩天天综合 | 免费精品视频 | 欧美激情h | 麻豆视频在线 | 色综合久久66 | av黄免费看 | 婷色在线 | 久久久国产精品一区二区三区 | 亚洲影院一区 | 色婷久久 | 欧美在线视频a | 欧美激情精品久久久久 | 天天操天天射天天 | 最近中文字幕免费av | 日日夜夜精品免费视频 | 欧美日本在线视频 | 国产涩涩在线观看 | 国产精品黄 | 国产一卡二卡在线 | 日本成址在线观看 | 日本在线中文在线 | 日日日日日 | 久久久国产网站 | 99精品久久精品一区二区 | 国产在线精品福利 | 国产日韩欧美在线观看 | 亚洲资源在线 | 久久久久亚洲国产 | 精品亚洲视频在线观看 | 久久精品理论 | 欧美精品久久久久久久久久白贞 | 午夜美女福利直播 | 久草在线综合网 | 国产精品女主播一区二区三区 | 国产亚洲va综合人人澡精品 | 亚一亚二国产专区 | 91av在线精品 | 国产伦精品一区二区三区免费 | 伊人五月天婷婷 | 九九热在线视频 | 在线观看黄网 | 国产精品久久久久久久久久久久午夜 | 久久91网 | 日韩视频免费 | 国产99久久九九精品 | wwxxxx日本 | 婷婷在线免费视频 | 天天色影院| 日本久久影视 | 人人草在线视频 | 国产综合精品久久 | 日本黄色大片免费 | 黄污在线观看 | 特级a老妇做爰全过程 | 99精品一区 | 欧美在线观看视频一区二区三区 | 久久看片| 中文字幕av播放 | 国产中文字幕视频 | 十八岁以下禁止观看的1000个网站 | 日韩av黄 | 免费av观看网站 | 天天亚洲 | 婷婷六月天综合 | 国产精品你懂的在线观看 | 成人h动漫在线看 | 亚洲色图22p | 欧美国产一区在线 | 五月婷婷黄色 | 人人澡人人舔 | 日韩在线免费高清视频 | 国产女人免费看a级丨片 | 日韩91av | 国产v在线 | 久久国产精品99国产精 | 国产精品99久久久精品 | 中文字幕在线视频国产 | 91黄站| 日韩欧美精品在线 | 国产精品99久久久久 | 亚洲国产精品成人va在线观看 | 中文字幕丰满人伦在线 | 久久avav | 国产精品免费视频久久久 | 国产精品美女毛片真酒店 | 国产精品 久久 | 成年人在线视频观看 | 国产精品久久久久久久久久新婚 | 日本精品一二区 | www.久久com | 四虎在线永久免费观看 | 久久久精品欧美一区二区免费 | 99久久久国产精品免费观看 | av噜噜噜在线播放 | 欧美国产精品一区二区 | 日本三级久久久 | 天天操夜夜看 | 五月天色丁香 | 国产成人专区 | 国产做爰视频 | av网站免费在线 | 天天色天天上天天操 | 日韩精品中文字幕在线观看 | 日本成址在线观看 | 欧美激情第28页 | 中文字幕在线观看网站 | 天天激情天天干 | 少妇bbw搡bbbb搡bbbb| 亚洲乱码国产乱码精品天美传媒 | 悠悠av资源片 | www色片 | 青青草华人在线视频 | 久久久久久久看片 | 久草电影在线 | 国产xxxx性hd极品 | 99这里精品 | 在线视频你懂 | 激情婷婷网 | 久久伊人国产精品 | 五月天婷婷在线播放 | 少妇av片| 五月激情av | 久久伦理 | 婷婷色六月天 | 93久久精品日日躁夜夜躁欧美 | 国内精品久久久久影院日本资源 | 亚洲天堂精品 | 国产精品一区二区精品视频免费看 | 激情五月在线视频 | 精品久久久久久亚洲综合网站 | 日韩一区二区三区视频在线 | 亚洲香蕉在线观看 | 天天伊人网 | jizz欧美性9 国产一区高清在线观看 | 国产精品美女久久久免费 | 亚洲经典视频在线观看 | 欧美一区二区精品在线 | 亚洲女欲精品久久久久久久18 | 国产成年免费视频 | zzijzzij亚洲成熟少妇 | 亚洲精品在线一区二区三区 | 日韩视频在线播放 | 婷婷开心久久网 | 精品国产伦一区二区三区观看体验 | 在线日本看片免费人成视久网 | 中文字幕欲求不满 | 日韩免费在线观看视频 | 久久国产精品视频观看 | 波多野结衣在线播放一区 | 国产精品久久久久久妇 | 日韩高清在线一区二区 | 欧美中文字幕第一页 | 亚洲天堂精品视频在线观看 | avwww在线观看 | 亚洲在线色| 日韩在线观看一区二区三区 | 国产精品一区免费看8c0m | 在线色亚洲 | 91在线看网站 | 日日日干 | 亚洲视频在线免费看 | 久久99精品波多结衣一区 | 久草视频网 | 亚洲成人av电影 | 精品一区中文字幕 | 日韩电影中文 | av字幕在线 | 亚洲精品美女免费 | 五月天天在线 | 精品免费99久久 | 深夜免费福利在线 | 亚洲乱码精品久久久 | 久久综合丁香 | 国产精品99久久免费黑人 | 免费网站在线观看人 | 黄色网在线播放 | 天天插天天干 | 中文字幕av电影下载 | 亚洲精品午夜aaa久久久 | 91丨精品丨蝌蚪丨白丝jk | 91精品一| www.夜夜操.com| 国产一级精品绿帽视频 | 欧美日韩精品在线一区二区 | 日本超碰在线 | 欧美日韩三区二区 | 69视频在线 | 日韩伦理片hd | 天天色天天综合网 | 亚洲全部视频 | 91成人在线观看高潮 | 黄色一级片视频 | 久久在线免费 | av免费观看高清 | 绯色av一区 | 欧美激情精品一区 | 久久人人爽人人人人片 | 国产成人高清av | 一级黄色片在线免费看 | av看片网址 | 91精品在线免费观看视频 | 欧美性生活大片 | 亚洲伦理中文字幕 | 国产91在线免费视频 | 久草在线中文888 | 激情网五月婷婷 | 国产亚洲精品久久久久久网站 | 亚洲综合成人婷婷小说 | 国产精品片 | 一区三区视频在线观看 | 99视频网站 | 国产xx在线| 五月婷婷激情综合网 | 成人国产精品久久久春色 | 在线草 | 色噜噜日韩精品欧美一区二区 | 午夜成人免费电影 | 97在线观看免费观看 | 日日摸日日添日日躁av | 亚洲精品777 | 久久综合综合久久综合 | 国产精品99视频 | 中文字幕在线字幕中文 | 亚洲欧美综合精品久久成人 | 91资源在线| av中文字幕网站 | 蜜臀aⅴ国产精品久久久国产 | 日日狠狠 | 日韩天天操 | 激情五月婷婷综合网 | 日韩av一区二区三区在线观看 | 国产h在线观看 | 日韩一区二区三免费高清在线观看 | 日韩一区在线播放 | 人人看黄色 | 日韩在线观看视频在线 | 国产1区在线| 少妇超碰在线 | 久久婷婷综合激情 | 精品国产欧美一区二区 | 国产精品av在线免费观看 | sesese图片 | 九九热精品视频在线播放 | av免费在线观看网站 | 精品久久久久久久久亚洲 | 一区二区三区在线免费观看 | 日韩av片无码一区二区不卡电影 | 国产91粉嫩白浆在线观看 | 欧洲精品视频一区二区 | 亚洲一区二区三区在线看 | 欧美性久久久久久 | 极品久久久久久久 | 国产系列 在线观看 | 伊人国产视频 | 日韩在线观看网址 | 夜色资源站国产www在线视频 | 精品伦理一区二区三区 | 激情综合五月 | 色婷婷激婷婷情综天天 | 亚洲精品中文字幕在线观看 | 黄色一级片视频 | 国产天天综合 | 九九热1| 九九视频精品免费 | 国产高清在线精品 | 久久新| 国产手机在线视频 | 午夜精品一区二区三区四区 | 国产99爱| 中文在线a√在线 | 91完整视频 | 丁香六月国产 | 午夜免费福利视频 | 日日干视频 | 在线不卡中文字幕播放 | 日韩av中文在线 | 狠狠的干狠狠的操 | 在线之家免费在线观看电影 | 久久久久国产精品视频 | 激情视频在线高清看 | 深夜视频久久 | 九九九毛片 | 日本三级不卡视频 | 久久婷婷一区二区三区 | 亚州av网站大全 | 日韩电影中文字幕在线观看 | 天堂av在线7 | 精久久久久| 午夜成人免费影院 | 国产精品99视频 | 精品一二三区视频 | 成人免费大片黄在线播放 | 日日干日日| 日韩网站在线看片你懂的 | 日日夜日日干 | 91麻豆高清视频 | 国产盗摄精品一区二区 | 国产亚洲综合精品 | 在线视频久久 | 久久久麻豆视频 | 99热在线国产精品 | 亚洲激情在线观看 | 狠狠伊人 | 亚洲三级网 | 成年性视频 | 日韩中文在线字幕 | 狠狠色丁香久久婷婷综 | 久草视频在线资源 | 亚洲干视频在线观看 | 久久天天躁狠狠躁夜夜不卡公司 | 亚洲精品无 | av大全在线 | 天天曰夜夜爽 | 黄色的网站免费看 | 99精品99 | 狠狠亚洲| 天天操夜夜操国产精品 | 久久毛片网站 | 亚洲国产精品一区二区久久hs | 黄色三级免费观看 | 亚洲免费视频在线观看 | 午夜精品久久一牛影视 | 久久五月天色综合 | 久久影视一区二区 | 婷婷精品| 97超碰人人看 | 日韩一区二区久久 | 中文十次啦 | 国产精品久久久久久久免费大片 | 日韩黄色免费电影 | 69国产成人综合久久精品欧美 | 久久九九影院 | 欧美一级淫片videoshd | 五月在线 | 日韩在线免费观看视频 | 国内亚洲精品 | 九色精品免费永久在线 | 开心激情婷婷 | 色婷婷国产精品一区在线观看 | 天天超碰| 国产视频在线看 | 日本aaaa级毛片在线看 | 国产精品成人品 | 黄网站色欧美视频 | 成年人国产在线观看 | 国产麻豆视频免费观看 | 91人网站 | 狠狠狠色狠狠色综合 | 69亚洲乱 | 97伊人网| 97在线观看免费高清 | 中中文字幕av在线 | 亚洲在线网址 | 中文字幕中文字幕中文字幕 | 丁香狠狠| www.com久久久 | www.久久视频 | 少妇自拍av| 亚洲黄色在线观看 | 精品久久久精品 | 成人a在线观看 | 亚洲影院国产 | 久久久九色精品国产一区二区三区 | 99精品视频免费在线观看 | 91自拍91 | 日本在线观看一区二区 | 粉嫩一区二区三区粉嫩91 | 91在线精品秘密一区二区 | 九九九国产| 欧美日韩精品在线播放 | 狠狠干,狠狠操 | 日韩三级av| 天天操天天能 | 日韩免费在线视频观看 | 免费一级片在线观看 | 国产大片黄色 | 天天弄天天操 | 亚洲欧美va | 日日狠狠| 欧美先锋影音 | 在线观看av免费 | 四虎欧美| 国产小视频在线播放 | 夜夜干天天操 | 97成人在线视频 | 国产99在线免费 | 亚洲精品电影在线 | 精品99免费视频 | 国产成人精品国内自产拍免费看 | 国内小视频 | 亚洲精品国产综合99久久夜夜嗨 | 国产免费高清视频 | 亚洲区视频在线观看 | 国产一区二区中文字幕 | 精品96久久久久久中文字幕无 | 激情丁香综合 | 在线a亚洲视频播放在线观看 | 涩五月婷婷 | 日韩高清av在线 | 四虎影视av | 中文国产在线观看 | 国产精品视频最多的网站 | 91亚洲精品久久久蜜桃 | 久草在线视频在线观看 | 国产一级视频在线 | 激情综合五月天 | 久久精品免费观看 | 国产成人精品日本亚洲999 | a视频免费| 天天操综合网站 | av观看网站| 国产精品18毛片一区二区 | 国产精品密入口果冻 | 日韩高清不卡在线 | 欧美日韩激情网 | 成人国产电影在线观看 | 五月婷婷综合激情网 | 最新国产精品亚洲 | 天天色天天色天天色 | 视频二区在线 | 91视频网址入口 | 日韩一二区在线 | 国产精品理论在线观看 | 不卡av电影在线 | 国产欧美日韩一区 | 天天草av| 视频在线观看入口黄最新永久免费国产 | 波多野结衣在线播放视频 | 国产精品 日韩 欧美 | 日本亚洲国产 | 国产免费午夜 | 天天视频色 | 中文字幕一区二区三区四区 | 成年人免费看的视频 | 国产a视频免费观看 | 91亚洲精品乱码久久久久久蜜桃 | 深夜免费福利网站 | 久久精品99精品国产香蕉 | 国产伦理一区二区 | 中文字幕乱码在线播放 | 久久伊人国产精品 | 中文字幕第一页在线vr | 日韩国产精品久久久久久亚洲 | 欧美日韩国产精品一区二区三区 | 亚洲高清在线视频 | 国产精品av久久久久久无 | 亚洲精品美女在线观看 | 最近中文字幕在线中文高清版 | 精品国产免费看 | 亚洲第五色综合网 | 日本中文字幕久久 | 国产一级片在线播放 | 九九精品毛片 | 亚洲天堂免费视频 | 亚洲电影院 | 久久久亚洲成人 | 美女视频免费精品 | 国产黄在线免费观看 | 亚洲国产影院av久久久久 | 国产日本在线 | 91九色精品国产 | 成人中文字幕+乱码+中文字幕 | 麻豆精品视频在线观看免费 | 色视频国产直接看 | 亚洲国产网址 | 国产精品久久久电影 | 五月婷婷六月丁香在线观看 | 激情久久五月天 | 五月婷婷影院 | 特级毛片在线 | 日韩欧美电影在线 | 麻豆极品 | 奇米网777 | 西西4444www大胆艺术 | 91精品国产电影 | 国内精品久久久久影院男同志 | 免费亚洲黄色 | 精品免费99久久 | 丝袜少妇在线 | 四虎国产精品成人免费影视 | 国产黄色特级片 | 草久在线播放 | 亚洲乱码中文字幕综合 | 亚洲 欧美 精品 | 免费观看国产成人 | 成片免费 | 在线成人国产 | 亚洲国产影院av久久久久 | 免费福利视频网站 | 欧美日韩一二三四区 | 青青河边草观看完整版高清 | 久久综合九色综合97_ 久久久 | 国内视频在线 | 福利视频入口 | 精品国产一区二区三区久久久蜜月 | 丁香电影小说免费视频观看 | 97碰在线视频 | 久久久96 | 日韩欧美高清一区二区 | av无限看 | 中文字幕免费一区 | 亚洲日本在线一区 | 在线日韩中文 | 九九热在线视频 | 国产欧美日韩精品一区二区免费 | 青草视频网 | 久精品视频在线观看 | 久久久久在线 | 免费在线看成人av |