微信開(kāi)發(fā)系列——公眾號(hào)內(nèi)嵌H5頁(yè)面獲取code离陶,拿到openID

如果在微信客戶端中訪問(wèn)第三方網(wǎng)頁(yè)稼虎,公眾號(hào)可以通過(guò)微信網(wǎng)頁(yè)授權(quán)機(jī)制,來(lái)獲取用戶基本信息招刨,進(jìn)而實(shí)現(xiàn)業(yè)務(wù)邏輯渡蜻。
我們要進(jìn)行授權(quán),先要經(jīng)過(guò)用戶授權(quán)(靜默授權(quán)和授權(quán)頁(yè)彈出授權(quán)兩種计济,具體看文檔中scope解析)拿到 code 茸苇,再用 code 去換取網(wǎng)頁(yè)授權(quán) access_token, 使用access_token 去拿到用戶的信息。

1. 準(zhǔn)備工作

關(guān)于微信網(wǎng)頁(yè)授權(quán)的官方文檔說(shuō)明:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
先熟悉下流程沦寂,每個(gè)字段的含義学密,以及注意事項(xiàng)。先把域名和環(huán)境配好传藏。才能正式去獲取授權(quán)腻暮。

2. 處理過(guò)程

1彤守、官方文檔中獲取code參數(shù)示例:

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

2、我的項(xiàng)目中只需要拿到 openID哭靖,所以采用的授權(quán)作用域?yàn)?scope = snsapi_base(不彈出授權(quán)頁(yè)面具垫,直接跳轉(zhuǎn),只能獲取用戶 openid )试幽。
需要注意的是筝蚕,redirect_uri 填自己部署項(xiàng)目的域名(注意該鏈接一定要使用urlencode 轉(zhuǎn)換一下),不然除了第一個(gè)參數(shù)后面的參數(shù)傳不過(guò)去(微信中其他URL中參數(shù)配置也是這樣)铺坞。

獲取地址的步驟和參數(shù)配置我就不贅述了起宽,文檔里說(shuō)的很清楚。在重定向成功后解析code济榨,這里方法貼一下:

/**
 * 根據(jù)參數(shù)名 獲取 URL 路徑中的參數(shù)
 * @param {String} name 要讀取的參數(shù)名稱
 */
function getUrlParam (name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
  let url = window.location.href.split('#')[0]
  let search = url.split('?')[1]
  if (search) {
    var r = search.substr(0).match(reg)
    if (r !== null) return unescape(r[2])
    return null
  } else {
    return null
  }
}

getUrlParam('code') 調(diào)用一下就能拿到 code 結(jié)果坯沪,然后用這個(gè) code 去調(diào)后臺(tái)的接口讓后臺(tái)去微信后臺(tái)拿openID。

或者用這個(gè)方法:

function GetRequest() {
var url = location.search; //獲取url中"?"符后的字符串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);
}
}
return theRequest;
}
console.log( GetRequest());

作者:阿布_0caf
鏈接:http://www.reibang.com/p/b5929770f92d
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著作權(quán)歸作者所有擒滑,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處腐晾。
遇到的問(wèn)題
  • 提示 redirect_uri 域名與后臺(tái)配置不一致,參考官方文檔(前面的文檔鏈接)如下片段:


    報(bào)錯(cuò) redirect_uri 域名與后臺(tái)配置不一致配置
  • 后臺(tái) access_token 拿不到丐一,提示和白名單 IP 有關(guān)藻糖,則參考微信返回報(bào)錯(cuò),將提示的IP加入白名單钝诚。

3. 測(cè)試方案

  • 公眾號(hào)測(cè)試號(hào)
    如果需要先測(cè)試颖御,可以參考我寫(xiě)的公眾號(hào)測(cè)試號(hào)的文章:微信開(kāi)發(fā)系列——使用公眾號(hào)測(cè)試號(hào)測(cè)試公眾號(hào)webAPP

  • 微信開(kāi)發(fā)者工具
    打開(kāi)微信開(kāi)發(fā)者工具,將模式切換到公眾號(hào)網(wǎng)頁(yè)版調(diào)試凝颇,在地址欄中輸入要測(cè)試的地址潘拱,進(jìn)行驗(yàn)證。


    微信開(kāi)發(fā)者工具調(diào)試模式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拧略,一起剝皮案震驚了整個(gè)濱河市芦岂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垫蛆,老刑警劉巖禽最,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異袱饭,居然都是意外死亡川无,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門虑乖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)懦趋,“玉大人,你說(shuō)我怎么就攤上這事疹味〗鼋校” “怎么了帜篇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)诫咱。 經(jīng)常有香客問(wèn)我笙隙,道長(zhǎng),這世上最難降的妖魔是什么坎缭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任竟痰,我火速辦了婚禮,結(jié)果婚禮上幻锁,老公的妹妹穿的比我還像新娘凯亮。我一直安慰自己边臼,他們只是感情好哄尔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著柠并,像睡著了一般岭接。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臼予,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天鸣戴,我揣著相機(jī)與錄音,去河邊找鬼粘拾。 笑死窄锅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缰雇。 我是一名探鬼主播入偷,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼械哟!你這毒婦竟也來(lái)了疏之?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤暇咆,失蹤者是張志新(化名)和其女友劉穎锋爪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爸业,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡其骄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扯旷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拯爽。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖薄霜,靈堂內(nèi)的尸體忽然破棺而出某抓,到底是詐尸還是另有隱情纸兔,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布否副,位于F島的核電站汉矿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏备禀。R本人自食惡果不足惜洲拇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望曲尸。 院中可真熱鬧赋续,春花似錦、人聲如沸另患。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昆箕。三九已至鸦列,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹏倘,已是汗流浹背薯嗤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纤泵,地道東北人骆姐。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捏题,于是被迫代替她去往敵國(guó)和親玻褪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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