開(kāi)發(fā)一個(gè)只能在微信端打開(kāi)的h5,需要獲取用戶(hù)的openId作為標(biāo)識(shí),并能在微信分享的時(shí)候自定義文案。
微信獲取網(wǎng)頁(yè)授權(quán)有兩種方式:
1、以snsapi_base為scope發(fā)起的網(wǎng)頁(yè)授權(quán),是用來(lái)獲取進(jìn)入頁(yè)面的用戶(hù)的openid的,是靜默授權(quán)并自動(dòng)跳轉(zhuǎn)到回調(diào)頁(yè)的。用戶(hù)感知的就是直接進(jìn)入了回調(diào)頁(yè)(往往是業(yè)務(wù)頁(yè)面)
2、以snsapi_userinfo為scope發(fā)起的網(wǎng)頁(yè)授權(quán),是用來(lái)獲取用戶(hù)的基本信息的。但這種授權(quán)需要用戶(hù)手動(dòng)同意,并且由于用戶(hù)同意過(guò),所以無(wú)須關(guān)注,就可在授權(quán)后獲取該用戶(hù)的基本信息。
3、用戶(hù)管理類(lèi)接口中的“獲取用戶(hù)基本信息接口”,是在用戶(hù)和公眾號(hào)產(chǎn)生消息交互或關(guān)注后事件推送,才能根據(jù)用戶(hù)openid來(lái)獲取用戶(hù)基本信息。這個(gè)接口,包括其他微信接口,都是需要該用戶(hù)關(guān)注了公眾號(hào)后,才能調(diào)用成功的。
其實(shí)兩種方式實(shí)現(xiàn)都沒(méi)有太大的差別,整體思路應(yīng)該是一樣的。這里我們以snsapi_base為例
代碼實(shí)現(xiàn)如下:

用戶(hù)在微信中直接訪問(wèn)**/code接口,接口判斷session中是否存在openid,如果有的話,redirect到前端對(duì)應(yīng)的地址
如果session中不存在openid,判斷請(qǐng)求參數(shù)中是否有認(rèn)證要使用的code,如果沒(méi)有,redirect到微信獲取code的認(rèn)證接口,回調(diào)地址還是這個(gè)**/code
如果有code,用code獲取openid,將openid保存到session中,redirect到前端對(duì)應(yīng)的地址