微信公眾號(hào)h5獲取用戶openId的方法和步驟
微信h5靜默笨枯、非靜默授權(quán)獲取用戶openId的方法和步驟:
openId是用戶在當(dāng)前公眾號(hào)下的唯一標(biāo)識(shí)(‘身份證’)馅精,就是說通過這個(gè)openId严嗜,就能區(qū)分在這個(gè)公眾號(hào)下具體是哪個(gè)用戶。
二洲敢、openId有什么用漫玄?
假如用戶A在當(dāng)前公眾號(hào)下購(gòu)買了一件商品,用戶的下單信息肯定要存儲(chǔ)到后臺(tái)數(shù)據(jù)庫(kù),那根據(jù)什么進(jìn)行存儲(chǔ)呢睦优?openId是用戶在當(dāng)前公眾號(hào)下的唯一標(biāo)識(shí)渗常,通過openId和用戶的下單購(gòu)買信息進(jìn)行鍵值對(duì)的數(shù)據(jù)綁定。那么我要查詢?cè)撚脩糍?gòu)買過什么商品汗盘,就能夠通過openId去查詢皱碘,并且數(shù)據(jù)是唯一的,不會(huì)和另外的用戶數(shù)據(jù)有沖突隐孽。
拓展:UnionID:一個(gè)商家或公司可能會(huì)有多個(gè)公眾號(hào)癌椿,假如用戶A同時(shí)都關(guān)注了這個(gè)公司下面的三個(gè)公眾號(hào),那么這個(gè)用戶就會(huì)有三個(gè)openId(一個(gè)公眾號(hào)就對(duì)應(yīng)一個(gè)openID)菱阵。如果作為開發(fā)者的我們踢俄,要對(duì)這個(gè)用戶在這三個(gè)公眾號(hào)下消費(fèi)的數(shù)據(jù)進(jìn)行匯總,我怎么獲取到這三份數(shù)據(jù)(同一用戶的)送粱?答案是 UnionId褪贵,微信開發(fā)者文檔:如果開發(fā)者擁有多個(gè)移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào)抗俄,可通過獲取用戶基本信息中的unionid來區(qū)分用戶的唯一性目锭,因?yàn)橥挥脩粜巯瑢?duì)同一個(gè)微信開放平臺(tái)下的不同應(yīng)用(移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(hào)),unionid是相同的寨辩。就是說如果要獲取用戶在同一公司不同公眾號(hào)下的數(shù)據(jù)禁舷,后臺(tái)表結(jié)構(gòu)不但要關(guān)聯(lián)openId,還要關(guān)聯(lián)UnionId违霞。
三亩码、怎么獲取openId?
(一)登錄微信公眾平臺(tái)后臺(tái)獲取公眾號(hào)的AppId茸塞,設(shè)置回調(diào)地址躲庄。
回調(diào)地址設(shè)置頁(yè)面向?qū)В洪_發(fā)>接口權(quán)限>網(wǎng)頁(yè)服務(wù)>網(wǎng)頁(yè)授權(quán)>修改。開發(fā)的項(xiàng)目需要放到已經(jīng)解析好服務(wù)器域名的服務(wù)器下钾虐,同時(shí)把Mp***.text文件放到服務(wù)器根目錄下噪窘,此時(shí)你的服務(wù)器必須能聯(lián)通外網(wǎng)也就是有公網(wǎng)IP,并且80端口是打開的,可以使用阿里云等服務(wù)器效扫,默認(rèn)配置就可以了倔监。
(二)根據(jù)開發(fā)需要,靜默授權(quán)還是非靜默授權(quán)
? ?① 靜默授權(quán):snsapi_base菌仁,沒有彈窗浩习,只能獲取用戶的openId。
? ?②非靜默授權(quán):snsapi_userinfo济丘,有彈框彈出需要用戶手動(dòng)點(diǎn)擊確認(rèn)授權(quán)谱秽。可以獲取openId,用戶的頭像疟赊、昵稱等
(三)前端代碼辱士,配置的參數(shù)要一一對(duì)應(yīng),獲取code听绳,并調(diào)用后臺(tái)接口,把code傳給后臺(tái)
redirect_uri异赫,這個(gè)的意思是:授權(quán)完成后再重新回到當(dāng)前頁(yè)面(又刷新了一次頁(yè)面)
getUrlParam的方法椅挣,可以百度下,就是獲取頁(yè)面路徑的某個(gè)字段所對(duì)應(yīng)的參數(shù)塔拳。
如果配置參數(shù)一一對(duì)應(yīng)鼠证,那么此時(shí)已經(jīng)通過回調(diào)地址刷新頁(yè)面后,你就會(huì)看到在地址欄中的code了靠抑。
(四)前端截取地址欄中的code后通過調(diào)接口把code傳給后臺(tái)量九,后臺(tái)通過code獲取openId和用戶頭像昵稱等信息并返回給前端
為什么,前端不能一起把獲取code和獲取openId的操作一并做了颂碧,還要請(qǐng)求后臺(tái)荠列,讓后臺(tái)獲取openId?
(五)后臺(tái)通過 code载城、AppSecret(公眾號(hào)平臺(tái)后臺(tái)取得)請(qǐng)求微信鏈接獲取openId
(六)通過openId做用戶的數(shù)據(jù)綁定或查詢等操作
????前后端都獲取了openId后肌似,就能通過openId做用戶數(shù)據(jù)的綁定和查詢了。