微信自定義菜單+獲取網(wǎng)頁(yè)授權(quán)+獲取用戶(hù)信息

微信自定義菜單+獲取網(wǎng)頁(yè)授權(quán)+獲取用戶(hù)信息

今天項(xiàng)目需要一個(gè)需求冒窍,就是添加一個(gè)菜單接口景鼠,并且還可以獲取用于的信息霞势,從而根據(jù)用戶(hù)的信息去做一些業(yè)務(wù)的查詢(xún)油额。通過(guò)百度和自己查看文檔大致的解決辦法如下:

注意

在自定義自己菜單前催植,若跳轉(zhuǎn)自己服務(wù)器里面的url時(shí)候肮蛹,首先得設(shè)置自己點(diǎn)擊菜單時(shí)的回調(diào)域名
image.png

不能以http或者h(yuǎn)ttps開(kāi)頭必須是www.xx.com類(lèi)似于這樣子的字符串形式

1 首先來(lái)自定義菜單創(chuàng)建接口

按照文檔的要求一步一步來(lái):

1.1 首選是自定義接口的一些限制和說(shuō)明,這里就不多說(shuō)了创南,看文檔就可以明白伦忠。

這直接看文檔即可 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013

1.2 然后是發(fā)送接口請(qǐng)求,自定義自己的菜單稿辙。

接口調(diào)用請(qǐng)求說(shuō)明

http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

詳情看文檔即可昆码,沒(méi)什么好說(shuō)的。發(fā)送請(qǐng)求和json即可邻储。

本人的請(qǐng)求如下:

url : https://api.weixin.qq.com/cgi-bin/menu/create?access_token=19_7LGwU9xSYhQ5qLea2Vw3u0AtMePOXGY0KTqR6pNhH14oYoev8mGTuI3YzWtUBrTB_5MeBPDEkPtl52M-vCAvH9Z8w2ZPmkHzW-ymKyzLU5YF0Z-aasorSC34xSH2bVG0XYAv8aeVVb0VyE4cPDAgAHAHVS

json數(shù)據(jù)

{
    "menu": {
        "button": [
            {
                "type": "scancode_push",
                "name": "掃碼",
                "key": "rselfmenu_0_1",
                "sub_button": []
            },
            {
                "type": "view",
                "name": "我的發(fā)票記錄",
                "url": "http://www.udeam.com/cc",
                "sub_button": []
            }
        ]
    }
}

注意:

不要直接復(fù)制官網(wǎng)的json數(shù)據(jù)未桥,應(yīng)當(dāng)去掉 "menu": 這一層json , 可能會(huì)出現(xiàn) 以下錯(cuò)誤:

{
    "errcode": 40016,
    "errmsg": "invalid button size hint: [hTpqGa02101977]"
}

成功返回: {"errcode":0,"errmsg":"ok"}

錯(cuò)誤時(shí)的返回JSON數(shù)據(jù)包如下(示例為無(wú)效菜單名長(zhǎng)度): {"errcode":40018,"errmsg":"invalid button name size"} 或者其他錯(cuò)誤等芥备。

2 自定義菜單查詢(xún)接口

請(qǐng)求說(shuō)明

http請(qǐng)求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN

返回說(shuō)明(無(wú)個(gè)性化菜單時(shí))

在這里插入圖片描述

菜單界面

在這里插入圖片描述

3 自定義菜單刪除接口

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141015

4 controller

@GetMapping("cc")
public String cc(HttpServletRequest request) throws IOException {
 return "suceess"; //我自己的頁(yè)面
}

啟動(dòng)運(yùn)行

success 頁(yè)面

但是我們這樣子僅僅只是單獨(dú)的挑了個(gè)頁(yè)面無(wú)法獲取到用戶(hù)的一些信息冬耿,如debug所示!

無(wú)法獲取到code所以萌壳,在跳轉(zhuǎn)第三方網(wǎng)頁(yè)的時(shí)候需要授權(quán)后才能獲取到用戶(hù)的一些基本信息亦镶。
** 獲取用戶(hù)信息的前提是網(wǎng)頁(yè)授權(quán)這里沒(méi)有進(jìn)行網(wǎng)頁(yè)授權(quán),從而獲取code值也為null**


在這里插入圖片描述

5 微信網(wǎng)頁(yè)授權(quán)

利用微信網(wǎng)頁(yè)授權(quán)機(jī)制來(lái)進(jìn)行重定向到自定義的一個(gè)url

如果用戶(hù)在微信客戶(hù)端中訪問(wèn)第三方網(wǎng)頁(yè)袱瓮,公眾號(hào)可以通過(guò)微信網(wǎng)頁(yè)授權(quán)機(jī)制缤骨,來(lái)獲取用戶(hù)基本信息,進(jìn)而實(shí)現(xiàn)業(yè)務(wù)邏輯尺借。

**關(guān)于網(wǎng)頁(yè)授權(quán)回調(diào)域名的說(shuō)明**

1绊起、在微信公眾號(hào)請(qǐng)求用戶(hù)網(wǎng)頁(yè)授權(quán)之前,開(kāi)發(fā)者需要先到公眾平臺(tái)官網(wǎng)中的“開(kāi)發(fā) - 接口權(quán)限 - 網(wǎng)頁(yè)服務(wù) - 網(wǎng)頁(yè)帳號(hào) - 網(wǎng)頁(yè)授權(quán)獲取用戶(hù)基本信息”的配置選項(xiàng)中燎斩,修改授權(quán)回調(diào)域名虱歪。請(qǐng)注意蜂绎,這里填寫(xiě)的是域名(是一個(gè)字符串),而不是URL笋鄙,因此請(qǐng)勿加 http:// 等協(xié)議頭师枣;

2、授權(quán)回調(diào)域名配置規(guī)范為全域名萧落,比如需要網(wǎng)頁(yè)授權(quán)的域名為:www.qq.com践美,配置以后此域名下面的頁(yè)面<http://www.qq.com/music.html> 、 <http://www.qq.com/login.html> 都可以進(jìn)行OAuth2.0鑒權(quán)找岖。但[http://pay.qq.com](http://pay.qq.com/) 陨倡、 [http://music.qq.com](http://music.qq.com/) 、 [http://qq.com無(wú)法進(jìn)行OAuth2.0鑒權(quán)](http://qq.xn--comoauth2-735sh62dwk9eysua.xn--0-k76bu98j/)

3许布、如果公眾號(hào)登錄授權(quán)給了第三方開(kāi)發(fā)者來(lái)進(jìn)行管理玫膀,則不必做任何設(shè)置,由第三方代替公眾號(hào)實(shí)現(xiàn)網(wǎng)頁(yè)授權(quán)即可

**關(guān)于網(wǎng)頁(yè)授權(quán)的兩種scope的區(qū)別說(shuō)明**

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ù)(即openid)關(guān)注了公眾號(hào)后,才能調(diào)用成功的存淫。

然后根據(jù)自己的場(chǎng)景選擇授權(quán)并且獲取用戶(hù)的信息

關(guān)于特殊場(chǎng)景下的靜默授權(quán)

1耘斩、上面已經(jīng)提到没宾,對(duì)于以snsapi_base為scope的網(wǎng)頁(yè)授權(quán)轧简,就靜默授權(quán)的,用戶(hù)無(wú)感知踏拜;

2、對(duì)于已關(guān)注公眾號(hào)的用戶(hù)荚虚,如果用戶(hù)從公眾號(hào)的會(huì)話或者自定義菜單進(jìn)入本公眾號(hào)的網(wǎng)頁(yè)授權(quán)頁(yè)薛夜,即使是scope為snsapi_userinfo,也是靜默授權(quán)曲管,用戶(hù)無(wú)感知。

具體而言硕糊,網(wǎng)頁(yè)授權(quán)流程分為四步:

1院水、引導(dǎo)用戶(hù)進(jìn)入授權(quán)頁(yè)面同意授權(quán),獲取code

2简十、通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token(與基礎(chǔ)支持中的access_token不同)

3檬某、如果需要,開(kāi)發(fā)者可以刷新網(wǎng)頁(yè)授權(quán)access_token螟蝙,避免過(guò)期

4恢恼、通過(guò)網(wǎng)頁(yè)授權(quán)access_token和openid獲取用戶(hù)基本信息(支持UnionID機(jī)制)

具體代碼以及步驟如下:

第一步

點(diǎn)擊菜單的url直接重定向到下面這個(gè)url即可,目的 “引導(dǎo)用戶(hù)進(jìn)入授權(quán)頁(yè)面同意授權(quán)胰默,獲取code ”

https://open.weixin.qq.com/connect/oauth2/authorize?appid= + “自己的appid” + &redirect_uri= +“ 自己的url ”+ &response_type=code&scope=snsapi_base&state=1#wechat_redirect"

@GetMapping("cc")
public String cc(HttpServletRequest request) throws IOException {

    String code = request.getParameter("code");

    return "redirect:/https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxx&redirect_uri=http://www.xxx.com/aaa&response_type=code&scope=snsapi_base&state=1#wechat_redirect";

}


第二步

獲取到code之后场斑,就可以根據(jù)獲取用戶(hù)信息(這里詳細(xì)見(jiàn)微信網(wǎng)頁(yè)授權(quán)四步驟文檔)
然后在controller 根據(jù)自己的需求執(zhí)行其他邏輯。

@GetMapping("aaa")//重定向的url 也就是上面controller重定向的微信url里面重定向自己的url(http://www.xxx.com/aaa)
public String aa(HttpServletRequest request) throws IOException {
    String code = request.getParameter("code");
    return "success";
}

debug 結(jié)果

在這里插入圖片描述

第三步

獲取到授權(quán)后code牵署,然后可以根據(jù) 網(wǎng)頁(yè)授權(quán)(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842)第2.3.4步步驟獲取用戶(hù)的信息漏隐,從而自己的實(shí)現(xiàn)業(yè)務(wù)邏輯。

注:

另外看到網(wǎng)上一部分大佬們直接將 將鏈接的url直接作為微信自定義菜單中view類(lèi)型中的url  中奴迅。

結(jié)果我在postman中發(fā)了一次請(qǐng)求青责,直接報(bào)url長(zhǎng)度錯(cuò)誤,所以放棄了這種方案取具!
在這里插入圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脖隶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子暇检,更是在濱河造成了極大的恐慌产阱,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件块仆,死亡現(xiàn)場(chǎng)離奇詭異心墅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)榨乎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)怎燥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蜜暑,你說(shuō)我怎么就攤上這事铐姚。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵隐绵,是天一觀的道長(zhǎng)之众。 經(jīng)常有香客問(wèn)我,道長(zhǎng)依许,這世上最難降的妖魔是什么棺禾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮峭跳,結(jié)果婚禮上膘婶,老公的妹妹穿的比我還像新娘。我一直安慰自己蛀醉,他們只是感情好悬襟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拯刁,像睡著了一般脊岳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垛玻,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天割捅,我揣著相機(jī)與錄音,去河邊找鬼帚桩。 笑死棺牧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朗儒。 我是一名探鬼主播颊乘,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼醉锄!你這毒婦竟也來(lái)了乏悄?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤恳不,失蹤者是張志新(化名)和其女友劉穎檩小,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體烟勋,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡规求,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卵惦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阻肿。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沮尿,靈堂內(nèi)的尸體忽然破棺而出丛塌,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布赴邻,位于F島的核電站印衔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏姥敛。R本人自食惡果不足惜奸焙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彤敛。 院中可真熱鬧与帆,春花似錦、人聲如沸臊泌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渠概。三九已至,卻和暖如春嫂拴,著一層夾襖步出監(jiān)牢的瞬間播揪,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工筒狠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猪狈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓辩恼,卻偏偏與公主長(zhǎng)得像雇庙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灶伊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容