日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...

發(fā)布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

微信公眾號開發(fā) 自定義菜單

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

請先前往微信平臺開發(fā)者文檔閱讀“網(wǎng)頁授權(quán)獲取用戶基本信息”的接口說明

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

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

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

一種是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)頁面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo (彈出授權(quán)頁面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)

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

{ "type":"view", "name":"會員中心", "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,還是同樣的錯誤。

后來我想了一個辦法

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

流程如下

請看代碼

{ "type":"view",

"name":"會員中心",

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

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

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

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

//類上的配置

@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ù)器會將微信認(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是一個模擬發(fā)送http請求的類

String jsonStr = URLConnectionHelper.sendGet(URL);

//System.out.println(jsonStr);

//out.print(jsonStr);

JSONObject jsonObj = new JSONObject(jsonStr);

String openid = jsonObj.get("openid").toString();

//有了用戶的opendi就可以的到用戶的信息了

//地址為https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

//得到用戶信息之后返回到一個頁面

model.addAttribute("user", wechatUser);

return "vip/userInfo";

}

效果如下

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

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

總結(jié)

以上是生活随笔為你收集整理的java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。