国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

微信公眾號(hào)開(kāi)發(fā) 自定義菜單跳轉(zhuǎn)頁(yè)面并獲取用戶(hù)信息實(shí)例詳解

2019-11-19 18:36:46
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

微信公眾號(hào)開(kāi)發(fā) 自定義菜單

請(qǐng)先讀完本文再進(jìn)行配置開(kāi)發(fā)

請(qǐng)先前往微信平臺(tái)開(kāi)發(fā)者文檔閱讀“網(wǎng)頁(yè)授權(quán)獲取用戶(hù)基本信息”的接口說(shuō)明

在微信公眾賬號(hào)開(kāi)發(fā)中,往往有定義一個(gè)菜單,然后用戶(hù)點(diǎn)擊該菜單就進(jìn)入用戶(hù)個(gè)人中心的功能,通常應(yīng)用于各個(gè)公眾賬號(hào)中的會(huì)員服務(wù)。

如何在微信自定義菜單中將用戶(hù)導(dǎo)航到個(gè)人中心頁(yè)面呢?

首選需要通過(guò)用戶(hù)點(diǎn)擊獲取用戶(hù)openid,而通過(guò)用戶(hù)的點(diǎn)擊跳轉(zhuǎn)獲取用戶(hù)openid就必須在菜單中動(dòng)態(tài)綁定用戶(hù)的openid,或者在菜單的跳轉(zhuǎn)URL中填寫(xiě)微信提供的鏈接,官方給了兩個(gè)鏈接類(lèi)型

一種是Scope為snsapi_base的鏈接

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect

另一種是Scope為snsapi_userinfo的鏈接

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

這兩種鏈接的區(qū)別如下

應(yīng)用授權(quán)作用域,snsapi_base (不彈出授權(quán)頁(yè)面,直接跳轉(zhuǎn),只能獲取用戶(hù)openid),snsapi_userinfo (彈出授權(quán)頁(yè)面,可通過(guò)openid拿到昵稱(chēng)、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶(hù)授權(quán),也能獲取其信息)

網(wǎng)上很多說(shuō)法是將鏈接的url直接作為微信自定義菜單中view類(lèi)型中的url(在填寫(xiě)是url時(shí)需要配置網(wǎng)頁(yè)授權(quán)回調(diào)域名和appid),本人試了一下這種做法然而不能成功

{ "type":"view", "name":"會(huì)員中心", "url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=你配置接收微信認(rèn)證的地址?response_type=code&scope=snsapi_base&state=1#wechat_redirect" },

返回結(jié)果是創(chuàng)建菜單失敗

創(chuàng)建菜單失敗 errcode:{40033} errmsg:{invalid charset. please check your request, if include /uxxxx will create fail! hint: [91..gA0792vr23]}

我試了一下將后面的地址進(jìn)行urlEncode,還是同樣的錯(cuò)誤。

后來(lái)我想了一個(gè)辦法

在自定義菜單中填寫(xiě)自己的url,在填寫(xiě)的url中將用戶(hù)重定向到snsapi_base的url中,然后再在snsapi_base中配置獲取用戶(hù)openid以及用戶(hù)其他信息,最后跳轉(zhuǎn)到一個(gè)頁(yè)面,也就是通常的會(huì)員中心頁(yè)面。

流程如下

處理流程

請(qǐng)看代碼

{ "type":"view",

"name":"會(huì)員中心",

"url":"http://配置的網(wǎng)址/redirect"}

其中通過(guò)url將用戶(hù)跳轉(zhuǎn)到

http://配置的網(wǎng)址/redirect

然后在處理方法中調(diào)用一次重定向即可

//類(lèi)上的配置@Controller@RequestMapping("/wechat")public class WeChatController{  @RequestMapping(value = "/redirect", method = RequestMethod.GET)  public String weixinRedirect(HttpServletRequest request, HttpServletResponse response) {    return "redirect:https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的appid&redirect_uri=你的服務(wù)器處理地址?response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect";    }}

服務(wù)器會(huì)將微信認(rèn)證 跳轉(zhuǎn)到你的服務(wù)器處理地址,也就是上面

redirect_uri=你的服務(wù)器處理地址中的地址

這里配置為

你的服務(wù)器地址/oauth

代碼如下

@RequestMapping(value = "/oauth", method = RequestMethod.GET)  public String weixinOAuth(HttpServletRequest request, HttpServletResponse response, Model model) {    //得到code    String CODE = request.getParameter("code");    String APPID = "你的APPID";    String SECRET = "你的SECRET";    //換取access_token 其中包含了openid    String URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code".replace("APPID", APPID).replace("SECRET", SECRET).replace("CODE", CODE);    //URLConnectionHelper是一個(gè)模擬發(fā)送http請(qǐng)求的類(lèi)    String jsonStr = URLConnectionHelper.sendGet(URL);    //System.out.println(jsonStr);    //out.print(jsonStr);    JSONObject jsonObj = new JSONObject(jsonStr);    String openid = jsonObj.get("openid").toString();    //有了用戶(hù)的opendi就可以的到用戶(hù)的信息了    //地址為https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN    //得到用戶(hù)信息之后返回到一個(gè)頁(yè)面    model.addAttribute("user", wechatUser);    return "vip/userInfo";  }

效果如下

這里寫(xiě)圖片描述

這里寫(xiě)圖片描述

而且這種方式當(dāng)用戶(hù)用其他瀏覽器打開(kāi)時(shí),會(huì)出錯(cuò),保證了只能在微信中使用,保障了安全性。而且地址欄不會(huì)有其他用戶(hù)個(gè)人信息的暴露。

這里寫(xiě)圖片描述

如有疑問(wèn),可以查看官網(wǎng),謝謝大家的閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 栖霞市| 青州市| 肥西县| 盐源县| 辽阳县| 遵化市| 日照市| 高密市| 黔西县| 兴宁市| 青冈县| 吉木萨尔县| 灵武市| 搜索| 塔城市| 丹凤县| 城固县| 南涧| 邵阳市| 扶沟县| 福泉市| 广平县| 乌拉特后旗| 邯郸市| 慈利县| 元朗区| 沛县| 武功县| 葵青区| 黄骅市| 广水市| 阳原县| 金乡县| 怀来县| 昌都县| 邻水| 德兴市| 大悟县| 隆昌县| 轮台县| 海淀区|