前幾天和業(yè)務(wù)談需求的時(shí)候提到了要在微信公眾號(hào)里面做一個(gè)申請(qǐng)頁(yè)面A。當(dāng)時(shí)我對(duì)微信的了解還不是很多饲梭,只知道公眾號(hào)上原來(lái)已經(jīng)做了一個(gè)其他功能的頁(yè)面B,B頁(yè)面可以獲取到客戶微信的openid玉雾。
當(dāng)時(shí)我們業(yè)務(wù)同事說(shuō)只有B頁(yè)面可以拿到openid跨算,其他的頁(yè)面都拿不到,所以這個(gè)正在談的A頁(yè)面入口要做在已有頁(yè)面B上鹉究,然后通過(guò)B獲取openid之后再傳給A宇立。我當(dāng)時(shí)因?yàn)椴欢仓荒苈?tīng)他說(shuō),畢竟那個(gè)同事說(shuō)的好像很確定的樣子自赔。
事后我仔細(xì)想了想妈嘹,頁(yè)面B也就是個(gè)普通的html呀,憑什么就B頁(yè)面能獲取客戶的openid呢绍妨?肯定有方法的润脸!于是我就上網(wǎng)搜了一下,最后成功獲取了自己的openid痘绎,下面介紹下方法吧津函。
首先,你要有個(gè)微信公眾號(hào)孤页,并且要獲得這個(gè)接口的權(quán)限
點(diǎn)修改之后尔苦,在功能設(shè)置的“網(wǎng)頁(yè)授權(quán)域名”處添加可以獲取微信openid的域名,也就是你自己公眾號(hào)里面需要獲取openid網(wǎng)頁(yè)的域名行施。
做完上面這些之后允坚,其實(shí)已經(jīng)可以實(shí)現(xiàn)我們想要的效果了,這里因?yàn)槲也皇且鲆粋€(gè)完整的功能蛾号,我只是想試驗(yàn)下html的頁(yè)面怎么獲取openid稠项,所以過(guò)程比較簡(jiǎn)陋。
這里是微信官方的網(wǎng)頁(yè)授權(quán)方法:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
其實(shí)看起來(lái)微信的說(shuō)明有那么一大段鲜结,但核心的內(nèi)容也就那么一點(diǎn)點(diǎn)展运,總結(jié)下來(lái)就是:先拿到code活逆,再用code去換取網(wǎng)頁(yè)授權(quán)access_token。
一拗胜、獲得code:
因?yàn)橹囟ㄏ虻膗rl要urlEncode蔗候,所以這里我用另一個(gè)網(wǎng)站把我要訪問(wèn)的url轉(zhuǎn)換了一下,網(wǎng)址如下:
在微信瀏覽器里面輸入下面的url埂软,appid锈遥、redirect_uri改成自己的,其他的都可以不用改勘畔。
靜默授權(quán):scope=snsapi_base
非靜默授權(quán):scope=snsapi_userinfo
一般在微信中是看不到url也沒(méi)辦法輸入url的所灸,所以這里我是用微信開(kāi)發(fā)者工具調(diào)試的。
輸入完靜默授權(quán)的url后炫七,url自動(dòng)跳轉(zhuǎn)成有code的爬立,這個(gè)code只有5分鐘有效期。
二万哪、獲得openid
同樣的懦尝,獲取openid也就是在微信瀏覽器中執(zhí)行一下下面這個(gè)url就可以了。appid壤圃,secret換成自己的,code用上面一步獲取的琅轧,其他的都不用改伍绳。
運(yùn)行完后的結(jié)果就顯示在左邊這個(gè)圖里啦,你看乍桂,openid不就拿到了嗎冲杀。
我沒(méi)嘗試非靜默授權(quán)的,不過(guò)我想應(yīng)該也差不多吧睹酌。這里也不是一套完整的方案告訴大家怎么把這個(gè)部署到前端和后端自動(dòng)獲取openid权谁。我只是想分享一下我試驗(yàn)的經(jīng)歷。