亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

公眾號(hào)無限回調(diào)登錄:用中轉(zhuǎn)服務(wù)突破網(wǎng)頁授權(quán)域名限制

公眾號(hào)無限回調(diào)登錄:用中轉(zhuǎn)服務(wù)突破網(wǎng)頁授權(quán)域名限制 簡介2024最新公眾號(hào)無限回調(diào)登錄接口源碼面向未完成ICP備案卻需接入公眾號(hào)登錄能力的開發(fā)者解決正規(guī)接口申請(qǐng)門檻高、回調(diào)受限的痛點(diǎn)。資源共7個(gè)文件、約7.77MB內(nèi)含PHP源碼、MySQL數(shù)據(jù)庫備份gz、HTML說明與界面截圖覆蓋環(huán)境部署、數(shù)據(jù)庫導(dǎo)入、后臺(tái)配置及回調(diào)鏈路設(shè)置等關(guān)鍵環(huán)節(jié)。文件結(jié)構(gòu)清晰既有可直接運(yùn)行的api.php等核心接口也有安裝介紹文本與可視化截圖便于對(duì)照配置Nginx 1.20.2、MySQL 5.6.50、PHP-7.2環(huán)境。已有243人學(xué)習(xí)下載適合具備基礎(chǔ)PHP開發(fā)能力、希望快速實(shí)現(xiàn)公眾號(hào)無限回調(diào)登錄的開發(fā)者按包內(nèi)步驟實(shí)操部署。1. 公眾號(hào)回調(diào)登錄被域名卡住時(shí)「無限回調(diào)」是更省事的答案做微信公眾號(hào)網(wǎng)頁授權(quán)登錄最卡人的往往不是 OAuth 流程本身而是后臺(tái)那個(gè)「網(wǎng)頁授權(quán)域名」只給一個(gè)位置。本地聯(lián)調(diào)要一個(gè)測(cè)試環(huán)境要一個(gè)正式環(huán)境還要一個(gè)公眾號(hào)后臺(tái)卻只肯配一個(gè)多填一次就報(bào) redirect_uri 參數(shù)錯(cuò)誤。2024 年以后我處理這類需求基本都改成了無限回調(diào)登錄接口的思路用一個(gè)中轉(zhuǎn)服務(wù)統(tǒng)一承接微信回調(diào)業(yè)務(wù)域名只需要拼一個(gè)鏈接就能拿到 code 換 openid。這篇把原理、源碼、部署、踩坑一次性講清楚適合正在被回調(diào)域名限制折磨的服務(wù)號(hào)開發(fā)者以及要做多系統(tǒng)統(tǒng)一登錄的團(tuán)隊(duì)。2. 先搞懂微信網(wǎng)頁授權(quán)為什么官方只給一個(gè)回調(diào)域名2.1 網(wǎng)頁授權(quán)的完整鏈路authorize → callback → token微信網(wǎng)頁授權(quán)走的是標(biāo)準(zhǔn)的 OAuth2 授權(quán)碼模式整條鏈路包含三個(gè)角色微信授權(quán)服務(wù)器、你的業(yè)務(wù)系統(tǒng)、用戶瀏覽器。先把這條鏈路在紙上畫明白后面所有代碼才有依據(jù)。第一步業(yè)務(wù)系統(tǒng)把用戶瀏覽器重定向到微信的授權(quán)頁https://open.weixin.qq.com/connect/oauth2/authorize ?appidAPPID redirect_uri回調(diào)地址URL 編碼后的完整路徑 response_typecode scopesnsapi_base state自定義參數(shù) #wechat_redirect第二步用戶同意授權(quán)后微信服務(wù)器帶著 code 和 state把瀏覽器 302 重定向到你填寫的 redirect_urihttps://你的回調(diào)地址/?codeCODEstateSTATE第三步你的后端拿著 code向微信的 token 接口換網(wǎng)頁授權(quán) access_token 和 openidhttps://api.weixin.qq.com/sns/oauth2/access_token ?appidAPPID secretSECRET codeCODE grant_typeauthorization_code第四步如果你申請(qǐng)的是 snsapi_userinfo 權(quán)限再用上一步拿到的 access_token 調(diào)用戶信息接口拿昵稱、頭像和 unionid。這里說的「回調(diào)」不是編程語言里那種 callback 函數(shù)而是 OAuth2 里的 redirect_uri微信生態(tài)里還有 JSAPI 支付回調(diào)和 wx-open-launch-app 的開放標(biāo)簽回調(diào)各自協(xié)議不同本文只講網(wǎng)頁授權(quán)登錄這一條鏈路。整條鏈路里微信對(duì)一個(gè)開發(fā)者最重要的約束就是第三步那個(gè)回調(diào)地址的域名必須在公眾號(hào)后臺(tái)提前登記。2.2 官方回調(diào)域名限制卡住了哪三類場(chǎng)景微信公眾號(hào)后臺(tái)的「網(wǎng)頁授權(quán)域名」只允許配置一個(gè)域名而且有幾個(gè)硬性約束不能帶 http:// 或 https:// 前綴不能帶端口號(hào)不能帶路徑域名必須已完成 ICP 備案。這意味著你只能用example.com這種裸域名example.com:8080、example.com/wx/callback都不會(huì)通過校驗(yàn)。這個(gè)單域名限制在實(shí)際開發(fā)里會(huì)卡住三類場(chǎng)景。第一類是本地開發(fā)。你本地跑著localhost:3000微信服務(wù)器根本訪問不到這個(gè)地址更不可能把它配置成網(wǎng)頁授權(quán)域名。新手最常見的翻車現(xiàn)場(chǎng)就是本地聯(lián)調(diào)時(shí)一切正常一放到微信里就報(bào) redirect_uri 參數(shù)錯(cuò)誤。第二類是多環(huán)境隔離。開發(fā)、測(cè)試、預(yù)發(fā)、生產(chǎn)四個(gè)環(huán)境四個(gè)域名一個(gè)公眾號(hào)只能配一個(gè)改來改去還影響正在聯(lián)調(diào)的其他同事。我見過一個(gè)團(tuán)隊(duì)因?yàn)楦挠蛎l繁直接把生產(chǎn)環(huán)境的登錄也帶崩了。第三類是多業(yè)務(wù)系統(tǒng)復(fù)用同一個(gè)公眾號(hào)。公司有官網(wǎng)、管理后臺(tái)、小程序 H5 三個(gè)系統(tǒng)都要用公眾號(hào)登錄每個(gè)系統(tǒng)的回調(diào)地址都不同公眾號(hào)后臺(tái)的位置卻只有一個(gè)。這才是「無限回調(diào)」這個(gè)需求真正要解決的問題。2.3 「無限」的實(shí)現(xiàn)思路中轉(zhuǎn)域名 臨時(shí)會(huì)話既然公眾號(hào)后臺(tái)只認(rèn)一個(gè)域名那就讓這個(gè)唯一域名成為一個(gè)中轉(zhuǎn)站。中轉(zhuǎn)域名的職責(zé)是統(tǒng)一接收微信的回調(diào)然后根據(jù)請(qǐng)求里攜帶的標(biāo)識(shí)把用戶重定向回真正的業(yè)務(wù)系統(tǒng)。具體拆開是這樣的中轉(zhuǎn)域名 M 配置成公眾號(hào)后臺(tái)唯一的網(wǎng)頁授權(quán)域名。業(yè)務(wù)系統(tǒng) A 把用戶引導(dǎo)到 M 的授權(quán)入口同時(shí)傳給 M 兩個(gè)參數(shù)A 自己的回調(diào)地址和 A 自己生成的 state。M 收到請(qǐng)求后把 A 的回調(diào)地址和 state 存進(jìn)一個(gè)短時(shí)效的臨時(shí)會(huì)話然后拼一個(gè)微信 authorize 鏈接其中 redirect_uri 固定指向 M 自己的回調(diào)接口state 填臨時(shí)會(huì)話 id。微信回調(diào)到 MM 根據(jù) state 里的會(huì)話 id 取出 A 的真實(shí)地址302 跳轉(zhuǎn)到A?codeCODEstate業(yè)務(wù)原state。A 拿到 code 后調(diào) M 暴露的 token 接口換取 openid整個(gè)登錄閉環(huán)完成。這套設(shè)計(jì)里微信側(cè)看到的回調(diào)域名永遠(yuǎn)只有 M 一個(gè)但 M 后端可以為任意數(shù)量的業(yè)務(wù)系統(tǒng)保存回跳地址。所謂「無限」指的是可接入的業(yè)務(wù)域名數(shù)量不再受公眾號(hào)后臺(tái)限額約束而不是繞過微信的域名校驗(yàn)。中轉(zhuǎn)域名仍然是已備案、可配置、可校驗(yàn)的合法域名微信的管控目標(biāo)「回調(diào)域名必須由開發(fā)者控制」并沒有被破壞。這個(gè)思路的另一個(gè)好處是 AppSecret 不用下發(fā)到各個(gè)業(yè)務(wù)系統(tǒng)。每個(gè)業(yè)務(wù)系統(tǒng)只需要知道中轉(zhuǎn)服務(wù)的地址敏感憑證統(tǒng)一收口在中轉(zhuǎn)服務(wù)里出問題時(shí)的排查面也小。3. 源碼拆解用 3 個(gè)接口實(shí)現(xiàn)無限回調(diào)登錄3.1 源碼目錄結(jié)構(gòu)一個(gè)入口、三個(gè)路由完整的實(shí)現(xiàn)只需要一個(gè) Node.js 服務(wù)依賴兩個(gè) npm 包整體結(jié)構(gòu)非常輕。我用 Express 寫路由axios 發(fā)請(qǐng)求實(shí)際生產(chǎn)里換成 PHP、Java 或 Go 重寫邏輯完全一樣核心就是那三個(gè)接口。wx-oauth-proxy/ ├── package.json ├── config.js └── server.jspackage.json 里只需要兩個(gè)依賴{ name: wx-oauth-proxy, version: 1.0.0, private: true, scripts: { start: node server.js }, dependencies: { express: ^4.19.0, axios: ^1.7.0 } }axios 用來向微信的 token 接口和用戶信息接口發(fā)請(qǐng)求比 Node 原生 http 模塊寫法更短錯(cuò)誤處理也更直觀。如果你所在團(tuán)隊(duì)不允許引入 axios用原生 https 模塊重寫這兩個(gè)請(qǐng)求也非常簡單。3.2 授權(quán)入口把業(yè)務(wù)回調(diào)地址存進(jìn)臨時(shí)會(huì)話config.js 是整個(gè)服務(wù)的唯一配置入口公眾號(hào)憑證、中轉(zhuǎn)域名、會(huì)話過期時(shí)間都放這里。AppSecret 統(tǒng)一由中轉(zhuǎn)服務(wù)保管絕不向下分發(fā)module.exports { // 公眾號(hào)后臺(tái)「基本配置」里拿到的 AppID 和 AppSecret appid: wxYOUR_APPID, appsecret: YOUR_APP_SECRET, // 中轉(zhuǎn)服務(wù)的對(duì)外域名 // 必須與公眾號(hào)后臺(tái)「網(wǎng)頁授權(quán)域名」配置完全一致不帶協(xié)議頭 proxyHost: https://oauth.example.com, // 用戶停留在微信授權(quán)頁的允許時(shí)長單位秒 // 用戶可能在微信里猶豫很久建議給 10 分鐘 sessionTtl: 600 };server.js 里授權(quán)入口路由是業(yè)務(wù)系統(tǒng)對(duì)接的第一個(gè)接口。它接收業(yè)務(wù)系統(tǒng)的回調(diào)地址和 state生成一個(gè)短會(huì)話 id然后把用戶送去微信授權(quán)頁const express require(express); const axios require(axios); const config require(./config); const WECHAT_AUTHORIZE_URL https://open.weixin.qq.com/connect/oauth2/authorize; const WECHAT_TOKEN_URL https://api.weixin.qq.com/sns/oauth2/access_token; const WECHAT_USERINFO_URL https://api.weixin.qq.com/sns/userinfo; // 臨時(shí)會(huì)話存儲(chǔ)sid - { redirectUri, state } // 單機(jī)部署用 Map 足夠多實(shí)例部署必須換 Redis 并設(shè)置同樣的 TTL const pendingRedirect new Map(); // 生成短隨機(jī)串作為會(huì)話 id不使用業(yè)務(wù)傳參直接做 key function genSessionId() { return Math.random().toString(36).slice(2) Date.now().toString(36); } app.get(/wx/oauth/authorize, (req, res) { const redirectUri req.query.redirect_uri; // 業(yè)務(wù)系統(tǒng)自己的回調(diào)地址 const state req.query.state || ; // 業(yè)務(wù)系統(tǒng)希望原樣帶回的參數(shù) const scope req.query.scope || snsapi_base; if (!redirectUri) { return res.status(400).send(missing redirect_uri); } const sid genSessionId(); pendingRedirect.set(sid, { redirectUri, state }); setTimeout(() pendingRedirect.delete(sid), config.sessionTtl * 1000); // 注意微信最終回調(diào)的是中轉(zhuǎn)域名不是業(yè)務(wù)域名 const authorizeUrl WECHAT_AUTHORIZE_URL ?appid config.appid redirect_uri encodeURIComponent(config.proxyHost /wx/oauth/callback) response_typecode scope scope state sid #wechat_redirect; res.redirect(authorizeUrl); });這里最關(guān)鍵的設(shè)計(jì)是業(yè)務(wù)系統(tǒng)的真實(shí)回調(diào)地址沒有直接暴露給微信而是存進(jìn)了服務(wù)端臨時(shí)會(huì)話。微信 URL 里的 state 只是一個(gè)短隨機(jī)串長度可控也不會(huì)有 URL 編碼和特殊字符問題。scope 參數(shù)需要業(yè)務(wù)系統(tǒng)傳還是由中轉(zhuǎn)統(tǒng)一決定我一般讓業(yè)務(wù)系統(tǒng)傳入默認(rèn) snsapi_base。snsapi_base 是靜默授權(quán)用戶無感知適合純登錄場(chǎng)景snsapi_userinfo 需要用戶點(diǎn)擊確認(rèn)授權(quán)能拿到昵稱頭像適合需要展示用戶資料的場(chǎng)景。如果你拿捏不準(zhǔn)默認(rèn) snsapi_base 最穩(wěn)。3.3 微信回調(diào)解開會(huì)話回跳到業(yè)務(wù)系統(tǒng)回調(diào)接口是微信服務(wù)器主動(dòng)訪問的必須能被公網(wǎng)訪問到路徑要和 authorize 里拼的保持一致app.get(/wx/oauth/callback, async (req, res) { const code req.query.code; const sid req.query.state; const pending pendingRedirect.get(sid); pendingRedirect.delete(sid); // 一次性使用用完即刪 if (!code || !pending) { return res.status(400).send(invalid callback params); } // 拼接業(yè)務(wù)系統(tǒng)的原回調(diào)地址code 和業(yè)務(wù)自己的 state 都要帶上 const sep pending.redirectUri.includes(?) ? : ?; res.redirect( pending.redirectUri sep code encodeURIComponent(code) state encodeURIComponent(pending.state) ); });拼接分隔符時(shí)我用了一個(gè)三元判斷如果業(yè)務(wù)回調(diào)地址本身帶了 query 參數(shù)就用連接否則用?。這個(gè)細(xì)節(jié)很容易被忽略業(yè)務(wù)回調(diào)地址恰好帶參時(shí)漏掉這個(gè)判斷就會(huì) code 參數(shù)丟失微信那邊表現(xiàn)為登錄失敗但日志里找不到任何報(bào)錯(cuò)。pendingRedirect.delete(sid)這行是血淚經(jīng)驗(yàn)換來的。微信的 code 是嚴(yán)格一次性的但業(yè)務(wù)回調(diào)地址對(duì)應(yīng)的會(huì)話本該也是一次性的如果不刪除用戶刷新一下頁面就會(huì)重復(fù)消費(fèi)同一個(gè) code緊接著報(bào) 40163。每次進(jìn)入回調(diào)先刪再判斷等于主動(dòng)把這個(gè)風(fēng)險(xiǎn)摁掉。3.4 換 token 與用戶信息AppSecret 只留在中轉(zhuǎn)服務(wù)業(yè)務(wù)系統(tǒng)收到 code 后下一步就是換 openid。這套設(shè)計(jì)里業(yè)務(wù)系統(tǒng)不需要知道 AppSecret它只需要向中轉(zhuǎn)服務(wù)要結(jié)果app.get(/wx/oauth/token, async (req, res) { const code req.query.code; if (!code) return res.status(400).send(missing code); const tokenResp await axios.get(WECHAT_TOKEN_URL, { params: { appid: config.appid, secret: config.appsecret, code: code, grant_type: authorization_code } }); const data tokenResp.data; if (data.errcode) { // 常見40029 code 無效40163 code 已被使用 return res.status(400).json(data); } res.json({ openid: data.openid, access_token: data.access_token, refresh_token: data.refresh_token, expires_in: data.expires_in, scope: data.scope }); }); app.get(/wx/oauth/userinfo, async (req, res) { const accessToken req.query.access_token; const openid req.query.openid; if (!accessToken || !openid) return res.status(400).send(missing params); const userResp await axios.get(WECHAT_USERINFO_URL, { params: { access_token: accessToken, openid: openid, lang: zh_CN } }); const data userResp.data; if (data.errcode) return res.status(400).json(data); res.json({ openid: data.openid, nickname: data.nickname, headimgurl: data.headimgurl, unionid: data.unionid }); }); app.listen(3000, () { console.log(wx oauth proxy listening on 3000); });token 接口返回的 access_token 是「網(wǎng)頁授權(quán) access_token」有效期 2 小時(shí)和公眾號(hào)全局 access_token 不是同一個(gè)東西不要混用。如果業(yè)務(wù)系統(tǒng)只需要 openid 做登錄態(tài)那 access_token 甚至可以不返回直接返回 openid 和用戶資料即可越少字段泄露越好。userinfo 接口依賴 scope 是 snsapi_userinfo。如果 authorize 時(shí)用的是 snsapi_base調(diào) userinfo 會(huì)報(bào)錯(cuò)因?yàn)殪o默授權(quán)根本拿不到訪問用戶資料的憑證。這個(gè)接口只對(duì)需要昵稱頭像的場(chǎng)景開放。4. 配置與部署公眾號(hào)后臺(tái) 4 個(gè)必填項(xiàng) 一條 curl 驗(yàn)證全鏈路4.1 公眾號(hào)后臺(tái)的配置順序AppID、AppSecret、IP 白名單、網(wǎng)頁授權(quán)域名代碼寫完先別急著啟動(dòng)公眾號(hào)后臺(tái)的配置順序錯(cuò)了后面全是坑。整個(gè)配置集中在「設(shè)置與開發(fā)」里按下面順序來配置項(xiàng)位置必填值常見錯(cuò)誤AppID基本配置 → 公眾號(hào)開發(fā)信息以 wx 開頭的 18 位字符串填成了原始 IDAppSecret基本配置 → 公眾號(hào)開發(fā)信息32 位字符串泄露到了前端代碼里IP 白名單基本配置 → IP 白名單中轉(zhuǎn)服務(wù)器的公網(wǎng) IP沒配置調(diào)用 token 接口報(bào) 40164網(wǎng)頁授權(quán)域名公眾號(hào)設(shè)置 → 功能設(shè)置中轉(zhuǎn)域名如 oauth.example.com帶了 https:// 或路徑AppSecret 的 IP 白名單只對(duì) api.weixin.qq.com 的調(diào)用生效你服務(wù)器 IP 變了token 接口立刻返回「invalid ip ... from x.x.x.x」。我踩過一次本地調(diào)試時(shí)把家里 IP 加進(jìn)去了第二天到公司又報(bào)錯(cuò)最后把白名單配成了 0.0.0.0/0 才消停但這樣安全性會(huì)降低能用云服務(wù)器的固定出口 IP 就不要偷懶。網(wǎng)頁授權(quán)域名填的是不帶協(xié)議頭、不帶路徑的裸域名。填oauth.example.com就只填這一行后面的/wx/oauth/callback是代碼里拼的跟后臺(tái)配置無關(guān)。后臺(tái)校驗(yàn)的是 host 部分協(xié)議頭、端口、路徑統(tǒng)統(tǒng)不認(rèn)。4.2 Nginx 反代與 HTTPS回調(diào)域名必須公網(wǎng)可訪問微信服務(wù)器回調(diào)你的域名時(shí)走的是公網(wǎng) HTTPS所以中轉(zhuǎn)服務(wù)前面必須有一個(gè)能完成 TLS 終止的入口。常見做法是 Nginx 反代到 Node 服務(wù)的 3000 端口同時(shí)配好 HTTPS 證書。server { listen 443 ssl; server_name oauth.example.com; ssl_certificate /etc/nginx/cert/oauth.pem; ssl_certificate_key /etc/nginx/cert/oauth.key; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; } }域名必須是公網(wǎng) DNS 可解析的證書不能過期443 端口不能被防火墻擋掉。微信官方要求回調(diào)地址必須是 HTTPS所以妥協(xié)會(huì)被直接攔下來。國內(nèi)服務(wù)器還要注意域名備案未備案域名在微信側(cè)的校驗(yàn)基本過不了這個(gè)提前確認(rèn)好不然后面改域名改到想罵人。4.3 用 curl 和 Postman 驗(yàn)證回調(diào)鏈路完整閉環(huán)部署完成后第一件事不是寫業(yè)務(wù)代碼而是手動(dòng)驗(yàn)證整條鏈路。用瀏覽器打開 authorize 鏈接觀察跳轉(zhuǎn)過程# 瀏覽器手動(dòng)訪問下面的地址微信會(huì)跳轉(zhuǎn)到中轉(zhuǎn)服務(wù)再回到業(yè)務(wù)系統(tǒng) curl -v https://open.weixin.qq.com/connect/oauth2/authorize?appidwxYOUR_APPIDredirect_urihttps%3A%2F%2Foauth.example.com%2Fwx%2Foauth%2Fcallbackresponse_typecodescopesnsapi_basestatedemo#wechat_redirect#wechat_redirect是微信要求的固定后綴存在 URL 片段里瀏覽器不會(huì)把它發(fā)送到服務(wù)器curl 訪問時(shí)會(huì)忽略它這是正常的。如果一切正常瀏覽器最終會(huì)落在你配置的業(yè)務(wù)回調(diào)地址上URL 里帶 code 和 state 兩個(gè)參數(shù)。拿到 code 后用 Postman 或者 curl 模擬登錄接口調(diào)用驗(yàn)證換 token 是否成功curl -s https://api.weixin.qq.com/sns/oauth2/access_token?appidwxYOUR_APPIDsecretYOUR_APP_SECRETcodeCODEgrant_typeauthorization_code正常情況下返回的 JSON 里包含 openid、access_token、expires_in 和 scope。如果返回 errcode先看 errmsg常見的 40029 表示 code 無效或已被使用需要重新走一遍授權(quán)流程。用 Postman 模擬登錄接口調(diào)用時(shí)要特別注意授權(quán)頁到回調(diào)的過程必須在真實(shí)瀏覽器里完成Postman 只能模擬第二步的 token 換取。因?yàn)?authorize 鏈接需要用戶登錄微信確認(rèn)這一步繞不開真實(shí)環(huán)境。5. 無限回調(diào)登錄的 5 個(gè)踩坑記錄從報(bào)錯(cuò)碼到日志排查5.1 現(xiàn)象微信提示「鏈接內(nèi)容不屬于當(dāng)前公眾號(hào)」用戶從公眾號(hào)菜單點(diǎn)進(jìn)頁面頁面內(nèi)跳轉(zhuǎn)到業(yè)務(wù)系統(tǒng)后微信直接攔截提示「鏈接內(nèi)容不屬于當(dāng)前公眾號(hào)」。這個(gè)報(bào)錯(cuò)最容易出現(xiàn)在頁面里嵌入了其他域名資源或者頁面跳轉(zhuǎn)到了沒有在公眾號(hào)后臺(tái)配置的域名。原因微信內(nèi)置瀏覽器會(huì)校驗(yàn)?zāi)闼陧撁娴挠蛎凸娞?hào)后臺(tái)配置的可信域名是否匹配。中轉(zhuǎn)域名只解決了網(wǎng)頁授權(quán)回調(diào)的校驗(yàn)如果業(yè)務(wù)頁面里有靜態(tài)資源來自另一個(gè)域名或者業(yè)務(wù)系統(tǒng)又做了一次二次跳轉(zhuǎn)微信同樣會(huì)攔截。解決把業(yè)務(wù)系統(tǒng)用到的所有靜態(tài)資源域名加進(jìn)「JS 接口安全域名」業(yè)務(wù)頁面盡量不要二次跨域跳轉(zhuǎn)。如果業(yè)務(wù)地址確實(shí)需要重定向讓中轉(zhuǎn)服務(wù)的回調(diào)直接落地到最終頁面而不是落到一個(gè)中間頁再跳一次。這一步很玄學(xué)明明鏈路通著微信就是不放過你最后你會(huì)發(fā)現(xiàn)就是多跳了一次的問題。5.2 現(xiàn)象code 換 token 報(bào) 40029 或 40163回調(diào)成功了但調(diào) token 接口時(shí)微信返回 40029code 無效或 40163code 已被使用。原因微信的 code 是嚴(yán)格一次性的有效期 5 分鐘使用過一次立即失效。兩個(gè)常見場(chǎng)景會(huì)觸發(fā)一是業(yè)務(wù)系統(tǒng)拿到 code 后又刷新了一次頁面導(dǎo)致同一個(gè) code 被消費(fèi)兩次二是中轉(zhuǎn)服務(wù)的 callback 接口把 code 302 回業(yè)務(wù)系統(tǒng)后業(yè)務(wù)系統(tǒng)又拿這個(gè) code 直接去調(diào)微信 token 接口而你中轉(zhuǎn)服務(wù)也調(diào)了一次兩邊搶同一個(gè) code。解決把換 token 的邏輯完全收斂到中轉(zhuǎn)服務(wù)的/wx/oauth/token業(yè)務(wù)系統(tǒng)只認(rèn)最終返回的 openid不允許業(yè)務(wù)側(cè)直連微信 token 接口。同時(shí)callback 接口里記得加一行日志記錄 code 的前四位和來源 IP排查時(shí)能快速確認(rèn)是不是重復(fù)消費(fèi)。5.3 現(xiàn)象redirect_uri 參數(shù)錯(cuò)誤域名與回調(diào)地址對(duì)不上瀏覽器訪問 authorize 鏈接后微信直接跳到錯(cuò)誤頁提示 redirect_uri 參數(shù)錯(cuò)誤。原因公眾號(hào)后臺(tái)的網(wǎng)頁授權(quán)域名與 authorize 鏈接里 redirect_uri 的 host 不一致。常見的有三種寫法錯(cuò)誤后臺(tái)配了oauth.example.com但鏈接里寫成了oauth.example.com/wx/callback的完整路徑——路徑本身沒問題問題往往出在協(xié)議頭上或者后臺(tái)配置時(shí)帶了https://前綴微信把整個(gè)字符串當(dāng)成域名處理了。解決把后臺(tái)域名清成純域名不帶協(xié)議、不帶端口、不帶路徑。然后核對(duì)中轉(zhuǎn)服務(wù) config.js 里的 proxyHost 和后臺(tái)配置的域名必須完全一致連大小寫都不能差。我建議在 config.js 里加一個(gè)啟動(dòng)時(shí)自檢打印出 proxyHost 和 appid每次部署后看一眼避免配錯(cuò)環(huán)境。5.4 現(xiàn)象state 參數(shù)丟了或亂碼業(yè)務(wù)側(cè)對(duì)不上會(huì)話業(yè)務(wù)系統(tǒng)明明傳了 state回調(diào)回來時(shí) state 變成了別的值或者直接沒有。原因微信對(duì) state 的約束是「原樣回傳」但很多人在拼 authorize 鏈接時(shí)對(duì) state 做了二次 URL 編碼微信回跳后解碼一次自己也解碼一次兩層嵌套編碼互相抵消導(dǎo)致亂碼。另一個(gè)原因是把業(yè)務(wù)回調(diào)地址直接塞進(jìn) stateURL 太長被瀏覽器或微信截?cái)?。解決業(yè)務(wù)系統(tǒng)傳給中轉(zhuǎn)服務(wù)的 state 只放短字符串比如用戶會(huì)話 id 或隨機(jī)串不要放完整 URL。中轉(zhuǎn)服務(wù)回跳時(shí)對(duì) state 做一次 encodeURIComponent 就夠前端拿到后 decodeURIComponent 一次。至于業(yè)務(wù)回調(diào)地址已經(jīng)被存進(jìn)臨時(shí)會(huì)話了根本不需要進(jìn) state別把它放進(jìn)去。5.5 現(xiàn)象本地聯(lián)調(diào)時(shí)微信回調(diào)打不到 localhost代碼在本地跑得好好的微信公眾號(hào)測(cè)試號(hào)也配了但微信回調(diào)就是不到本地服務(wù)。原因微信服務(wù)器訪問的是公網(wǎng)localhost 只有你本地機(jī)器能訪問。常見的錯(cuò)誤是以為配了公眾號(hào)后臺(tái)的網(wǎng)頁授權(quán)域名就等于微信能訪問到你本機(jī)的服務(wù)。解決本地聯(lián)調(diào)不要用 localhost用一臺(tái)有公網(wǎng) IP 的測(cè)試服務(wù)器把測(cè)試服務(wù)器地址配成網(wǎng)頁授權(quán)域名。個(gè)人開發(fā)者建議直接用微信公眾號(hào)測(cè)試號(hào)調(diào)試測(cè)試號(hào)后臺(tái)可以獨(dú)立配置網(wǎng)頁授權(quán)域名不占用正式號(hào)的配置額度。注意測(cè)試號(hào)的網(wǎng)頁授權(quán)同樣要求公網(wǎng)可達(dá)的 HTTPS 地址本地起服務(wù)加一層內(nèi)網(wǎng)映射工具也能做開發(fā)驗(yàn)證但生產(chǎn)環(huán)境永遠(yuǎn)不要依賴這類鏈路。6. 進(jìn)階把無限回調(diào)改造成多公眾號(hào)共用的登錄中心6.1 多公眾號(hào)共用一個(gè)中轉(zhuǎn)用 appid 參數(shù)路由當(dāng)你有多個(gè)公眾號(hào)或一個(gè)主體下多個(gè)服務(wù)號(hào)時(shí)中轉(zhuǎn)服務(wù)可以升級(jí)成登錄中心。config.js 從單一 appid 改成配置組根據(jù)請(qǐng)求里的 appid 參數(shù)動(dòng)態(tài)選擇對(duì)應(yīng)的憑證// config.js module.exports { apps: { wxYOUR_APPID_1: { appsecret: SECRET_1, name: 官網(wǎng)登錄 }, wxYOUR_APPID_2: { appsecret: SECRET_2, name: 管理后臺(tái)登錄 } }, proxyHost: https://oauth.example.com, sessionTtl: 600 };authorize 接口增加一個(gè)必傳的 appid 參數(shù)callback 和 token 接口從會(huì)話里取出 appid再用它去找對(duì)應(yīng)的 AppSecret。業(yè)務(wù)系統(tǒng)各自傳自己的 appid互不干擾。這樣一個(gè)中轉(zhuǎn)域名就能支撐多個(gè)公眾號(hào)的登錄回調(diào)后臺(tái)的網(wǎng)頁授權(quán)域名配置依然只此一個(gè)。6.2 驗(yàn)證登錄閉環(huán)的每日檢查清單登錄鏈路是典型的黑匣子跳轉(zhuǎn)多、環(huán)節(jié)多出錯(cuò)時(shí)頁面往往只顯示一個(gè)空白或錯(cuò)誤碼。我現(xiàn)在的習(xí)慣是每上線前手動(dòng)走一遍完整流程只看三處日志中轉(zhuǎn)服務(wù)的訪問日志里authorize 請(qǐng)求是否出現(xiàn)sid 是否正確生成。微信回調(diào)到 callback 接口后session 能否正常取出code 是否只被消費(fèi)一次。token 接口返回的 openid 是否和預(yù)期用戶一致scope 是 snsapi_base 還是 snsapi_userinfo。如果第 2 步出現(xiàn) session 取不到基本可以斷定是會(huì)話過期或回調(diào)地址拼錯(cuò)第 3 步的 openid 每次登錄都變化大概率是 appid 和 AppSecret 配錯(cuò)了號(hào)。檢查清單固定下來之后這個(gè)方案的問題基本都能在五分鐘內(nèi)定位不用再靠玄學(xué)猜。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色 婷97| 亚洲人成网站7777| 日韩精品人妻一| 99热免费| 欧美丰满少妇xx高潮| 亚精品无码毛片一区二区三区| av天堂手机版追回 | 蜜桃臀久久| 91精品黄在线观看| 少妇啪啪自拍| 麻豆熟妇乱妇熟色A片在线看 | 精品一区二区亚洲国产| 无码人妻一区二区三区四区老鸭窝| 97人妻色| 亚洲九九夜夜| 亚洲αv一区二区三区| 国产综合久久久麻桃个| 91黑丝操| 一区中文字幕二区日韩| 国产AV高清AV无码| 色九月婷婷| 精品性爱| 伊人国产成人av网站| 欧洲精品欧洲精品| 超碰 av 女人天堂| 欧美日韩丝袜| 青青伊人这里只有精品| 亚洲欧洲日韩天堂av| 美女网站91| 99热日| 亚洲不卡不卡中文字幕不卡| 综合色图区| 太久视频| 高潮的A片激情扒开一区| 91痴汉| 色九九九综合| 欧美日韩另类字幕中文| 亚洲欧洲日产国产综合网| 欧美久热| 色色色综合网| 久久久久13| 色婷婷亚洲婷婷| 欧美一区二区观看在线| 乳欲人妻办公室奶水| 免费1级a做爰片观看| 久九色| 国产路线专区| 91爱啪| 欧美啪啪啪91| 超碰97日韩| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 999久久久久久久久| 蜜桃久久久久久久久久久久| 久草资源在线视频官方总站日韩丝袜美腿 | 国产AV天美| 天堂岛av| 免费视频97| 美国三级日本三级久久99| 亚洲 图片 综合91| 97国伦国色| 国产精品女同| 麻豆久久久久久久久丝袜| 成视频在线观看免费看| 丁香五月婷婷五月| 欧美日韩222| laoshunv91| 日韩视频小说在线观看| 色制服丝袜夫妻av一区| 久9综合在线| 绑缚麻绳人妻寝取完整版| 10000部十八禁看电影| 日韩钢筋无码高清啾啾啾| 宗合情欲网| 妇人噜噜| 天天激色| 国产嫩草精品A88AV| 97伊人超碰| 伊香蕉综合久久久久久久噜噜噜 | 97狠狠| 夜色91| 又粗又长又大国产不卡| 久久久亚洲欧美综合| 精品一区二区成人动漫| 亚洲国产第一页综合视频| 国产馆极品诱惑| 色眯眯av| 精品无码欧美三级| 偷窥自拍A片| 这里只有精品视频在线| 1二区9| 99精品无码| 亚洲巨爆乳一区二区三区四季网| 极品极品色影院| 天天综合,91综合永久| 国产精品欧美激在线| 日本 情色 1区2区3区| 日韩一级久久毛片| 口爆综合网| 91久久久久久久| 91殴美| 操逼逼福利视频| 天天影视综合网欧美精品| 91麻豆一二三区| 欧美日韩另类在线播放| 麻豆视频test| 人人操人人爽人人操人人| www.色婷婷色综合| 人妻夜爽夜夜爽| 激情五月天插| 九九九九九九九| 蜜乳成人AV| 久久久久久久一级黄色打同平台| 97伊人| 18禁的网站在线| 人妻无码后入| 天天草天天日| 日韩精品99999| julia国产在线 | 99精品国产户外露出| 色蜜AV| 欧美色图99| 亚洲日韩美女中文字幕乱| 9超碰免费| 欧美A片中文字幕| 欧美激情综合色综合啪啪五月| 欧美大色交| 综合操逼| 热热色中文无码| 亚洲av无码成人精品国产| 中亚黄色三级大片 | 青青草色插素人| 亚洲av无码成电影在线播放| 国产青视频| 亚欧免费观看视频| 亚洲精品欧洲精品| 国产熟女完整版中字| 大香蕉综合| 亚洲本色精品一区二区久久| 欧美性爱网97| 久久精品国产96精品亚洲拳交| 18禁久极品美女久久哦哟呀!| 亚洲欧洲日本精品中文a∨| 天美国产精品| 高潮的A片激情扒开一区| 久久亚洲色图中文字幕| 91超碰人人操| 色欲天天综合久久久无码网中文| 麻豆精品天美| 睡产熟女乱伦| 午夜毛片亚洲精品片国产久久久| 国产有码一区| 国产精品香蕉热久久新品| 国产精品禁久久久精品| 亚洲色图久久精品蜜| 另类图片综合| 色综合99999| 精品国产肉丝袜在线拍国语| 91人妻少妇| 嗯……啊…嗯嗯…啊…好舒服| 人人贴人人摸| 97美日韩视频| 国模不卡一本二本三电影| 综合欧美日本三级| 小说区 图片区色 综合区| 美欧老女人97| 五月丁香六月激情综合| 国产51色综合久久免费| 一本大道久| 91人妻视频在线| 久久久久亚洲?V片无码V| 天天综合网~91| 国产欧美日韩臀| 亚洲欧美国产其他二区| 夜草网站| 久草这里只有精品 | 91女色| 色女综合| 97二区四区| 5278欧美一区二区三区| 四虎国产精品永久地址入口| 中英熟女操女| 日韩无码第3页| 情色五月天网| 亚洲色入欧美| 99国产精品自在自在| 天美国产精品| 发朗少妇买婬全视频中文| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 台湾一区国产高清在线| 97在线免费公开视频| 黄色不卡视频| 欧美狠狠操| 一区二区你上我| 岛国AB视频| 国产精品无码成人精品| 日韩精品-原创伙伴| 9精品久久| 小草精彩毛片| 91国产精品熟女| 婷婷六月色| 久草视频分类在线| 丁香五月天社区| 乱伦3P视频| 日韩乱伦AⅤ| 最新亚洲人成网站在线影院| 成人a级高清视频在线观看| 久操免费观看| 夜夜欧美 | 亚洲91大片| 99热 按摩 日韩| 九九无码视频| 99在线精品观看99| 巨爆乳肉感一区二区三区竹菊影视| 欧亚无码视频| 国产精品爆乳懂色蜜乳| 97爱综合| 97欧美视频| 亚洲天堂欧美| 亚洲av青草久久一区二区| 亚洲人妻爽爽爽| 精品少妇一区二区| 欧洲亚洲人妻无码高清久久三区四区| 91亚洲狠狠色| K8久久久久| 亚洲天堂一区二区| 天天干18禁| 人妻丝袜二区| 精品一级毛片在线观看| 岛国在线国产| 久久东京伊人一本到鬼色| 香蕉热人人精品| 欧亚性爱在线视频| 亚洲啪啪视频一区二区| 熟女被操视频网址| 亚洲男人的天堂V| 伊人久久久日韩一区| 噜噜噜亚洲精品| 亚洲欧美日韩电影网站一区 | 欧美色图20P| 亚洲骚逼少妇| 无码久久国产| 午夜福利av电影在线| 国产亚洲精品无码三区| 日韩视频啪啪| 中文字幕一区av| 日本少妇va7777| 伊人网在线观看| 久久精品国产久精国产| 黄色工厂这里只有精品| 欧美一区二区男人天堂| 婷婷亚洲综合| 97色97好| av影院十区| 激情色图| 免费看黄视频亚洲网站| 97色伦欧美| 91久久18禁| 啊啊啊啊啊好舒服视频| a片在线播放| av网站在线观看了| 五月天色综合| 欧美熟女丝袜| 老女人综合网| www.色婷婷| 91亚州欧美| 九九九九日本| 伊香蕉综合久久久久久久噜噜噜| 日韩免费看在线黄色片| www.婷婷| 国产性爱欧美性爱在线| 欧美亚洲中文| 日欧操屄视频| 99热 按摩 日韩| 怡红院成人视频| 999精品国产高清一区二区| 国产农村一一级特黄毛片| 久久超碰免费的| 欧美,日韩,中文,另类| 久久产精品一区二区三区电影| 成年人一级黄色毛片大全在线观看| 精品妇女一区二区三区| 欧美色综合网| 天天色粽合合合合合合合| av草草在线电影| 国产高清午夜成人在线观看| www.99热| 97日亚洲欧美| 亚洲少妇中文字幕网址| 久久视频少妇美女| 两性色网| 伊人久久大香蕉线AV五月天| 精品人妻一二三| 精品久久久亚洲AV成人网站| 欧美大片天天看| 成人毛片免费| 日韩久久艹| 凹凸精品熟女在线观看| 狠狠狠一区二区三区| 国产熟码AV| 婷婷激情五月天小说网| 超碰 欧美| 天堂中文日本在线观看| 天天操人人操骚逼网站| 国产日逼视频| 中出在线视频| 免费看日产一区二区三区| 中文在线视频| www.色婷婷| 欧美成人精品一区| 99色| 爱逼综合| 手机不卡视频不卡在线一二三区| 美女91网站| 伊人综合色网| 中国农村熟妇毛片视频| 91成人久久| 韩国成人精品久久久免费看| 夫妻AV网站| 日韩黄色电影网站| 嗯嗯不要 视频| 激情五月丁香五月| 好吊色综合| 亚洲熟妇自偷自拍另欧美| 91精片| 桃色六月天| 国产AV色黄看到爽| 偷拍2020| 欧美色色色| 欧美综合网在线| 99热aaa| 2017人人操,人人摸| 97伪v| 伊人网免费视频| 天天天天天天天天综合| 亚洲色图欧美视频| 一区二区影视| 日本久操视频| 国产精品久久99日日| 亚洲宗合网| 亚洲综合五月天婷婷丁香| 中国人高清www色视频免费| 爱欲AV| h无码动漫在线观看| 亚洲猛交| 狠狠干狠狠色| 园内精品自拍视频在线播放| 51一区二区三区| 亚洲精品视频二区| www黄片免费看com| 久久少妇| 亚洲AV在线资源| 日本高清久久| 性爱视频无打码在线观看| 欲色啪| 91熟女熟妇视频网站| 国产乱伦搜索结果91P| 激情小说亚洲图片| 天天干一区二区| AV无码久久久精品| 欧美成熟性爱精品| 九九久久玖玖| 欧美亚州综合网图片| 操逼999| 男人亚洲91首页在线| 少妇人妻好深太紧了vr91| 欧美视频一区二区三区| 色超碰综合| 亚洲有码 欧美精品| 成人av影院在线观看| 日韩精品人妻一区二区| 日本免费一区二区不卡 | 国产精品国产精品国产| 亚洲国产中文字幕| 香蕉免费一区二区三区不读| 91美女视屏| 国内精品伊人久久久久影院会| 午夜性刺激视频免费观看| 欧美激情精品久久久| 亚洲AV资源| 99热成人| 日韩av女优在线免费一区| 99久久久er直播网址| www.99色| 日韩强奸av| 国产成人在线观看网址| 久草成人| 熟女激情综合网| 另类图片天天影视| 久久东京热成人| 啊啊啊男女| 色九九综合AV| 欧美骚少妇| 国产精品久久久久久久久久久久久久久| 日韩中字av一区| 精品少妇一区二区三区免费观看| 人人干人人搞人人摸| 国产99精品一区二区三区免费| 一道α片欧美| 五月天久久综合网| 人人摸.人人色| 婷婷丁香激情| 综合影院永久入口国产| 99视频这有这里有精品| 伊人网青青| 激情五月综合开心五月| 91色人妻| 看日韩操逼| 强奸乱伦麻豆| 综合色99| 亚洲五月丁香花狠狠干一区二区三区 | 欧美 综合 亚洲| 日日噜噜夜夜久久亚洲一区二区| 色眯眯av| 亚洲色婷婷久久91| 久久亚州精品成人Av无| 殴美大黄片| 天天躁日日躁AAAXX| 超碰人人超在线观看| 男人的天堂啪啪啪啪啪蜜桃不卡| 国模限制级电影| 国产suv精品一区二区四| 国产九九久久久精品| 久久中文色图| 日日躁夜夜躁狠狠躁超爽| 久久人| 国产极品粉嫩馒头一线天av| 国产欧美日韩一区二区三区| 粉嫩绯色AV一区二区在线| 97精品综合| 国产老熟女| 神马久久69| 日本国产二线女色| 国产乱伦视频污| 肉嘟嘟www视频在线观看高清| 99视频在线| 三级片大波波| 欧美麻豆成人同性GⅤ在线| 男人天堂无码| 丁香五月天久久精品视频一区二区三区| 校园春色五月天| 亚洲。日韩。欧美| 青椒国产97在线熟女| 中文字幕精品专区搜索结果91| 99热啪啪| 在线观看AV片| 精品午夜福利| 日本超碰色精品| 色婷婷基地| 国内毛片欧美香蕉精品| 91强在线播放| 成 人 影视 一区 二区 三区 四区| 欧美一区二区日韩三区| 久热最新在线杭州| 人妻蜜桃臀| 色鬼在线综合| 99久久综合网| 国产午夜精品在线观看| 成人乱人伦一区二区| 欧洲中文字幕| 亚洲中文字幕网| 国产亚洲精品A在线观看下载| 极品一区二区三区免费| 美女毛片999| 96精品在线| 亚洲黄色a级片| 久久中文字幕不卡人妻| 精品亚洲| 国产精品播放| 大香蕉手机在线| 玖玖爱一区在线| 嗯嗯啊啊视频在线看| 欧美亚洲日本视频久久久| 一区二区中文| 中欧人妻丝袜中文字幕| 久久久久久无码人妻中文字幕| 国产高清不卡视频| 国产欧美精品日韩区二区麻豆天美| 天堂8在线新版官网| 久久精品福利影院| 欧美翘臀视频网站一区二区三区| 欧美淫乱视频| 免费看国产大AB| 色av中文字幕| 欧美亚男人的天堂| 成人日本精品九区| 亚洲AV免费在线观看| 日本大片日本一区二区免费高清| 自偷自拍的亚洲视频| 岛园激情| 大色综合网| 午夜无遮挡男女啪啪视频| 天天综合网日韩| 国产9熟妇视频网站| 国产AV天美传媒一区二区三区| 99操| 国产盗摄美女如厕大神作品在线观看| 亚洲 图片 综合91| 久草视频制服诱惑| 亚洲自拍欧美国产首页网曝 | 欧美综合1性辶| 亚洲人码13| 97伪v| 成人精品视频| 九七人妻在线| 黑人精品欧美一区二区蜜桃| 91n处女在线观看| 激情欧美97| 国产精品乱码久久| 亚洲人妻在线精品| 老熟女乱伦一区| 秋霞一集毛片观看| 秋霞久久亚洲精品成人| 人妻中文字幕日韩电影| 竹菊影视国产一区二区| 自偷自拍的亚洲视频| 91美女丝袜诱惑视频| 亚洲天堂人妻一区二区| 偷窥自拍亚洲色图| 久久久久久久久久久久久9999| 亚洲AV乱码专区国产噜噜亚洲| 自拍盗摄一区| 91性| 清纯唯美综合亚洲| 视频国产欧美在线播放| 性爱乱伦视频免费| 国产亚州日韩欧美看片| 婷婷久久综合| 北京美女一区二区| 四虎精品亚洲| 麻豆国产精品午夜视频| 精品一区二区综合熟妇| 丝袜美腿欧美| 亚洲大色堂| 亚州五月| 2018天天日天天日| 免费看日本操逼视频| 亚洲宅男天堂| 最新av在线| 欧美综合狠| 国产毛片片精品天天看视频| 手机在线A片| 五月天激情四射| 好吊色一区| 欧亚日韩三区| 色香天天| 奇米狠999| 91久久久久免| 妇人噜噜| 人妻丝袜日本| 日韩色| 91neishe| 天天操福利视频综合网站| 人妻另类 专区 欧美 制服| 国产偷拍自拍在线视频| 另类图片五月| 久久久999国产精品| 无码高清操逼网址| caorenqi shipin| 国产女人9999| 国产精品亚洲天堂网址| 麻豆天美国美国产| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 一级性爱网| 日本一级二级三级网站| 97自拍一区| 91精品老女人| 99热9| AV老汉| 亚洲精品99999| 无遮挡h肉动漫在线观看| 97免费视频网| 网友自拍第1页| 日韩av乱伦| www.男人天堂| 日本成人A片网站| 国产女人高潮视频| 玖玖爱视频网站| 欧美日韩国产中文精品字幕自在自线| 97色欧州| 日逼逼免费看| 国产一区麻豆免费观看| 超碰免费人妻在线| 99re6在线视频精品免费完整版安卓版| 婷婷综合在线观看| 另类老少妇| 亚洲AV噜噜狠狠网址蜜桃动漫| 日日干日日操五月天伦理视频| 视频不卡中文字幕| 91精品久久久久久综合五月天| 蜜桃AV天堂| 操婢日韩| 久操在97| 不卡av在线中文字幕| 伊人久久大香蕉线AV五月天| 精品人妻一区二区三区四区石在线| 99激情| 麻豆尤物视频网| 久久激情综合| 欧美91精彩| 在线综合色| AV色五月天| 十八禁的黄污污免费网站| 美女骚尻视频| 激情综合婷婷| 国产女大学生AV| 欧美欲色| 中国乱伦一区二区| 大香蕉日亚洲日本亚大| 精品久久人妻成人网| 亚洲少妇视频| 九九热精品免费视频| 99re在线| 18禁久极品美女久久哦哟呀!| 色色网91| 超碰97在线中文| 国产树林里野战在线看| 夜夜欧美| 熟妇人妻一区二区| 95自拍视频在线观看| 日韩熟女视频二区| 婷婷综合五月| 思思视频免费看网站| 久9久精品视频| 探花精品视频| 亚洲97成人在线观看| 91久久久老司机| 五月丁香影院| 亚洲欧洲av影音| 怡红院亚洲怡春院av| 精品国产乱码久久久久久久久1 | 久久精品一区| 爱av免费| 亚洲AV无码乱码| 九九九九精品一区| 久久九九99| 国产极品精品美女视频| 午夜啊啊| 少妇极品熟妇人妻无码| 久久婷婷热| 欧美色www亚洲国产阿娇要播| 久久超碰av在线| 国产精品对白内射| 色色激情五月天| 免费的黄片有限公司| 91制服丝袜| 久久久久精| 亚洲AV无码成人精品久久| 中国人高清www色视频免费| 综合九九| 青青草吊丝| 婷婷久久五月| 青娱乐老司机视频| 久久精品国产97欧美精品亚洲 | 96AV久久久| 国产精品久久伊人| 日本一区二区三区免费观看| 肉丝中文无码高清| 久偷拍| 人妻熟女一区在| 日韩卡一卡二卡三在线| 综合伊人网12色| 欧美日韩制服| 久久久久久久久久久久九| 久久久久性熟视频| 午夜男女爽爽爽在线视频 | 熟女欧美日韩综合婷婷| 搡老女人老妇女老妇老熟女怎么读| 国产人妻天天干精品| 眼镜人妻101.com| 久久只有精品| 超碰97 线线 在现| 上床啊啊啊| 综合性视频99| 91亚洲欧美综合高清在线| 亚洲码和欧洲精品激情系列| 久久精品一区二区三区不卡| 婷婷99| 伊人久久大香大香线蕉中文| av在线观看不卡网站| 国产成人精品网站| 91操熟女视频| rivers-china.com| 热久久无毒不卡| 亚洲性图91| 一牛一区二区三区久久| 东京成人一区| 麻豆九九九| 人妻在线中出视频| 天天综合香 ld视频| 亚洲人成色9999精品久久| 黄色AV影视| 97久精品| 有码人妻系列| 亚洲免费精品一区| 亚洲精品视频在线播放| 亚洲精品视频在线| 天天插天天射| 天天干少妇| 久久久久久夜夜夜夜夜| 综合国产97| 少妇人妻精品| 欧美亚洲AN| 91成人久久| 久久99干一本高清| 草久在线| 久久91| 日韩免费一级性爱视频| 强奸乱伦 亚洲一区| 欧美性爱日韩高清| 高清国产无码av| 欧亚成人| 亚洲欧美精品福利在线| 欧美日综合| 日韩人妻少妇中文字幕| 夜夜操夜夜爽夜夜高潮| 91爰爱欧美| 久久影视二区三区行押| 嗯嗯啊啊啊好爽| 亚洲精品九九九| 伦激情人妻另类人妻| av在线一区二区三区| 五月天黄色激情视频| 婷婷中文字幕| 欧美色图片91| 亚洲.欧美.丝袜.中文.综合| 碰人碰碰人人开房人肉| 懂色AV网| 国产高清成人传媒影视| 大香蕉九九| 96精品在线| 中文字幕视频2区| 超碰视97中文| 黄色工厂这里只有精品| 欧美黄色手机在线观看| 国产成人bd在线观看| 一本道综合色图| 一区=区三区视频| 国产又长又大又粗的视频| 久草免费在线视频| 国产一级137片内射麻豆| 99视频精品| 刺激精品视频| 丝袜美腿91| 亚洲欧洲日韩天堂av| 91狼人| 一本正道久久熟女| 18精品一二区| 欧美性爱第一页久久| 亚洲AV无码国产精品久久久久| 欧美性爱97超碰| 国产精品一区二区后入| 精品午夜福利| 天天天天天干夜夜夜夜夜操| 老熟女熟妇| 农村少妇久久久久久久| 91社操逼| 性色中出| 国产9l 大屁股| 欧美顶级黄色大片免费| 夜夜高潮夜夜爽高清视频一 | 91日韩| 国产精品久久久三级无码| 综合网,亚洲,欧美| 97精品综合久久网| 亚洲无码 国产无码| 黑人黄片在线免费观看| 欧洲亚洲人妻无码中字久久三区四区| 91丝袜| 精品黑人一区二区| 怡春苑东京热| 999久久久免费精品国产牛牛| 人妻22p| 欧美午夜视频| 小视频国产| 人妻天天爽夜夜爽爽| 欧美色图97| 久久精品国产AV一区二区三区| 亚洲综合97中文网| 九九九九九精品| 日韩成人综合网| 久久久久久久久国产| 91春色| 日本在线一二| 超碰碰激情97+久| 黄片免费日韩| 97人肏| 好吊色综合| 人妻少妇精品一区二区三区| 午夜无码熟妇丰满人妻| 国产成人精品必看| 亚洲男人天堂2016| 午夜精品久久久久久久久久蜜桃 | 亚洲强奸乱伦影视网| 青女在线| 国产日韩精品人妻久久久久色欲网站| 亚洲精品欧美专业| 又粗又长又大国产不卡| 99亚亚热| 黄片www视频免费| 伊人久久亚洲中文字幕| 91精品人| 操死我了嗯嗯嗯| 久久五月天婷婷丁香中文字幕| 色婷婷婷五月天激情四射| 高清无码久操视频| 欧亚第一综合网| 日韩性爱毛片操骚逼| 中国黑人三级片网站上区| 人人玩人人添人人澡免费| 91超碰碰在线| 欧美国产伊人久久久久| 亚洲第一男人天堂| 天天舔天天| 91福利网在线观看| 北京美女一区二区| 夜嗨影院| 欧色网址| 三级片大波波| 一区二区三区黄色片a| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 免费精品中文字幕| 国产97综合| 色欧美天天| 偷拍 欧美 日韩| 日韩av色图| 亚洲黄网在哪免费看| 青草精品视频-日本久久久久网站| 精品一区二区3区| 国产久久成人| 亚洲欧美校园| 操我啊啊啊啊啊| 国产三区免费在线观看| 亚洲色电影在线| 美女97超碰| 免费视频a级毛片免费视频| 天天射日日干| 日韩欧美中文字| 丁香九月婷婷| 国产在线视频二区| 乱人乱色一区二区三区免费| 日本熟妇熟色97一本在线观看| 免费精品人妻一区二区三| 精品无av| a人欧美综合天堂麻豆| 一区在线观看中文字幕| 永久免费观看的毛片的网站| 日本孕妇孕交| www老逼91| 人人摸人人干人人拍97| 久久在线观看免费视频| 熟女久久久| 丁香五月天婷婷姐| 久久精品性| 国产亚洲精品无码三区| 粉嫩久久久极品| 91夜色chaopeng| 伊人久久婷婷| 中国乱伦一区二区| 精品一级毛片在线观看| 91在线丝袜| 97超碰免费人人性爱| 爽爽淫人网| 欧美 亚洲 偷拍自拍| 久久成人国产精品| 99re久久| 久热精品在线| 亚洲欧美一区二区不卡视频播放| 啊啊啊啊嗯嗯嗯用力好爽 | 热久久无毒不卡| 欧美午夜色妇色鬼| 欧美日韩成人在线| 人人摸人人叼| 操操吧亚洲乱伦视频| 丝袜美腿丝袜| 熟女露脸激情自拍视频| 亚洲精品天天影视综合网| 情色AV电影| 久久性爱免费送| 黄色AAAAA欧美| 人妻无一区二区三区| 五月天亚洲色图| juliaann欧美丝袜办公室| 久草老司机| 麻豆国产成人精品| 99抽插| 江都AV在线| 99热亚洲天堂| 色五月婷婷网| 亚洲成av人片色午夜乱码| 嫩草影院性色| 巨爆乳一区二区爆乳区| 亚欧免费| 国产精品一区av在线| 亚洲中文字幕在线视频一区二区| 超碰九7免费| 免费视频观看60秒| 欧美激情内射| 久久精品国产亚洲粉嫩| 久久久999国产| 国产免费内射视频| 人妻精品一区二区| 亚洲毛片基地专区| 久久久久国产精品久久久| 亚洲男人天堂网站| henhen91| 欧洲亚洲少妇| 亚洲精品久久久久毛片A片拉屎 | 三级片大波波| 宗合情欲网| 抽插爽| 秋霞鲁丝午夜无码一区二区三| 美美91成人国产精品欧美精品久久久久久久 | 97亚洲精品超碰| 久久久中文| 性色AV网站| 人妻中文字幕精品无码| 亚洲毛片一级带毛片基地| 国产精品福利资源在线尤物| 天天谢天天干| 操逼不卡中文字幕| 日韩啪啪视频| 欧美性猛交美女自慰91| 亚洲黄日韩无码专区| 久久久99999久网站| 国产AV人人夜夜澡人人爽麻豆| 91操熟女视频 | 麻豆乱码久久精| 二三四区精品| 91在线丝袜| 天美传媒AV在线| 日韩三级在线观看网站| 欧美亚洲另类在线蜜桃| 大香蕉久| 亚洲不卡不卡中文字幕不卡 | 你懂得91| 日本免费不卡二区| 国产成人主播| aV中文麻| 亚洲av性爱电影| 白丝被操91| 国产成人在线观看综合| 国内91熟女人妻丝袜天天精品视频在线| 久久亚洲天天做| 黄久在线| 欧美成人一级麻豆| 欧亚性爱在线视频| 欧美中出1| 精品久久久久黄少妇| 久久久久久久六六| 校园春色五月天| 九九九久千久久激情蜜桃在线看 | 福利在线视频一区二区| 久久久久女教师免费一区| 日本天堂网| 天天精品| 成人免费福利网站国产| 欧美综合娱乐久久| 国产呦精品一区二区三区下载| renqi久久久久久久久久久久| 国产精品suv一区| 床戏久久久av一区二区麻豆| 无码 黑人一区二区三区| 亚洲全色网| 性久久| 欧美一级久久久久久久大片动画| 成人情色一区二区| 在线观看A啊啊啊| 国产精品午夜AV完会免费| 黄网站黄视频网站进入口| 亚洲AV色图一区| 亚洲色欲天天天堂色欲网女| 亚洲另类电影| AV天堂电影网| 欧美综合网A| 国产精品69人妻无码久久久| 国产中出内射一区二区| 亚洲阿v天堂在线| 婬女免费一二三区A片| 成人一区二区三区四区| 91人妻在线视频| 日本肉体xxxx裸交| 天堂综合| 99e久久国产精品| 日本三级久| 97亚洲国产| 最新三级网址| 亚洲男人天堂网久久| 性色A∨91| 免费视频a级毛片免费视频| 观看免费区二区三区二| 国产精品网址| 国产伦精品一区二区三区在线观 | 新婚人妻扶着粗大强行坐下| 久久人妻视频网| 97ai亚洲| 唐山老熟妇露脸啪啪叫| 日韩资源网| 免费观看网黄| 国产一区二区三区不卡手机在线| 99在线精品视频| 爽爽淫人网| 精品一区二区三区蜜桃| 少妇干B| 91精品婷婷国产综合久久竹菊| 一级一性爱免费视频| 青青国产精品在线| 国产丝袜啪啪| 99色在线| 久久αⅴ| 黄页18禁| 日本成人在线不卡一区二区三区 | 亚洲国产精品9999在线观看| 97露脸精品丝袜| 日本高清免费一本视频在线观看| AV天堂丝袜| 亚洲欧美日韩偷拍色图| 香蕉婷婷| 久久精品熟妇丰满人妻99| 九九久久精品| 亚洲在线欧美| 欧美少妇大量自拍视频在线观看| 激情五月天中文字幕色| 91老熟女逼| 人妻丰满熟妇一区二区三| 国产高清不卡视频| 无码日韩人妻av一| 97超色| a网站免费观看| 91丝袜在线播放| 婷婷五月天久久精品视频一区二区三区 | 欧美一区二区三区大综合| 青娱乐淫乱1314| 97资源免费视频| 久操视频资源站公开| 男女啊啊啊啊啊| 日韩偷拍色图| 美国精品国产精品| 很狠操| 亚洲91极品| 日韩熟女操逼| 97热视频在线观看| 337p大胆噜噜噜噜噜91Av| 中文字幕蜜乳av| 久久国产对白激情浪潮| 乱伦1色页| 久久大香蕉97| 婷婷尹人大香蕉免费| 翔田千里AⅤHD无码| 十八禁电影伊人网| 欧美78p| 男女性感激情网站| 中国91AV| 国产suv精品一区二区四| 最新中文字幕精品在线| 久久成人东京热人妻| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 国产一区二区三区,在线观看观看 五月开心久久AV官网 | 欧美激情亚洲情色| 国产青一二三| xxx0国产在线播放| 91啪啪| 射丝袜大香蕉| 欧洲综合视频| 中文字幕亚洲永久精品| 亚洲成人贴图| 日韩人妻精品中文字幕| 99热| www..com操老师| 久久久中文| 午夜AV污污污| 性色高清在线| 免费视频a级毛片免费视频| 伊人专区一区二区三区| 人妻激情视频| 久久久久久久久久久久黄色| 激情五月天色色网| 狠狠中文字幕| 欧美亚洲激情| 综合亚州欧美| 97伪v| 色老汉色| 超碰99在线观看| 岛国片国产成人亚洲播放| 亚洲色图 欧美| 天天色综合影视网| 日韩欧亚中文在线| 国产人伦精品一区二区三区| 国产高潮AA片免费看| 国模不卡| 国产91会所女技师在线观看| 丝袜AV一区二区三区| 噜噜噜亚洲精品| 日日橹狠狠爱欧美超碰| 色蜜AV| 97久久视频| 黑人嘿嘿嘿超爽免费视频| 91影库| 国产精品美女视频诱惑| 啊啊啊好舒服视频| 免看60秒涩涩视频| www.高清无码诱惑一区.com | 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 国产成人精品亚洲日本| AV色图| 东北毛片| 国产精品一区二区密臀| 超碰 97国产熟女| 久久9久久| AV一二区| 午夜性| 天堂v无码免费视频| 久久性爱视频| 亚洲色图尤物视频| 在线岛| 加勒比综合| 尤物视频视频官网| 日本一区二区三区四区免费观看| 少妇色欲综合网2| 可以看的av| 黑人嘿嘿嘿超爽免费视频| 国产精品白领在线观看| 日韩免费簧片| 久久三区四区| 天天综合网91入口| 国模少妇一区二区三区| 中文字幕一区二区视频在线观看| 久久国产视频专区一二三| 日韩成人大片在线观看| 久 久无码人妻AV| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 九九99精品视频在线观看| 凹凸视频在线一区二区| 男人天堂网手机版婷婷| 蜜臀久久99精品久久久老,,| 嗯嗯啊啊视频在线看| 国产日韩精品suv| 99re这里只有| 免费超碰97久久| 老女人爆菊| 操屄不卡视频| 中文字幕国产在线天堂| 日天天九九天堂666| 欧美伦乱爱| 久久国产精品91| 成人蜜乳小视频网站| AV不卡在线| 亚洲天堂AV在线播放| 中文字幕国产| 日本在线激情一区二区三区 | 欧美国产视频| 日韩八十路老熟女| 男人的天堂在线| 丝袜色综合| 久久久啊啊啊| 人人看黄色视频| 黄骗免费| 草草影院在线视频| 一区二区偷拍拍视频| 精品人妻二区三区| 中文字幕-区二区三区四区视频中国 |