node.js實(shí)現(xiàn)微信開(kāi)發(fā)之獲取用戶授權(quán)-創(chuàng)新互聯(lián)

本篇主要講述,如何在微信中打開(kāi)自家頁(yè)面后,彈窗請(qǐng)求用戶授權(quán),以便拿到用戶的微信信息。

堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都成都茶樓設(shè)計(jì)小微創(chuàng)業(yè)公司專業(yè)提供企業(yè)網(wǎng)站設(shè)計(jì)營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺(jué)設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁(yè)布局、功能開(kāi)發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

首先說(shuō)一下,完成自定義分享信息的,從無(wú)到有的流程:

基礎(chǔ)硬件服務(wù):

需要一個(gè)公網(wǎng)可以訪問(wèn)的有效域名:

  • 購(gòu)買域名,并備案,我是在阿里云購(gòu)買的,備案需要十幾個(gè)工作日。
  • 購(gòu)買ip,然后設(shè)置上面的域名,解析到該ip,這個(gè)時(shí)間可以快到忽略。

擁有自己的服務(wù)器,來(lái)存放自己頁(yè)面項(xiàng)目:

我還是在阿里云購(gòu)買購(gòu)買服務(wù)器,這個(gè)花費(fèi)大,幾百元一年的使用權(quán)。
而且這個(gè)服務(wù)器,本質(zhì)就是一臺(tái)電腦,是電腦就有配置,我目前只是自己學(xué)習(xí)使用,配置幾乎是最低的,而且購(gòu)買的套餐自帶公網(wǎng)ip,這么一來(lái)我連上面購(gòu)買ip的錢也省了。
綜上所述,最終我只購(gòu)買了域名和一個(gè)套餐自帶公網(wǎng)ip的服務(wù)器,服務(wù)器用來(lái)放置前端項(xiàng)目和后臺(tái)項(xiàng)目。

阿里云ECS:https://cn.aliyun.com/product/ecs

微信公眾平臺(tái),開(kāi)發(fā)者認(rèn)證

打開(kāi)微信公眾平臺(tái) https://mp.weixin.qq.com/,使用郵箱注冊(cè),注意,一個(gè)郵箱只能注冊(cè)一個(gè)微信公眾平臺(tái)賬號(hào),一個(gè)賬號(hào)只能選擇一種賬號(hào)分類且不能更改,這里一定要慎重,這里選擇訂閱號(hào)。

可選個(gè)人類型、企業(yè)類型等等,其中,個(gè)人類型是不沒(méi)有分享定制功能的,但企業(yè)類型我又不符合。。。最終我還是選擇的個(gè)人類型,因?yàn)榧词刮业馁~號(hào)沒(méi)有權(quán)限,但微信公眾號(hào)里面,提供一個(gè)功能全開(kāi)的測(cè)試賬號(hào),使用測(cè)試賬號(hào)可以進(jìn)行學(xué)習(xí)和測(cè)試,還是沒(méi)問(wèn)題的。

填寫(xiě)信息,綁定微信,注冊(cè)完成,登錄進(jìn)去。

為了進(jìn)行開(kāi)發(fā),需要在這里和你的后臺(tái)項(xiàng)目和前端項(xiàng)目進(jìn)行對(duì)應(yīng)的配置,讓微信確認(rèn)后臺(tái)項(xiàng)目和前臺(tái)項(xiàng)目都是你的之后,才會(huì)提供服務(wù)。

有關(guān)服務(wù)器端和后臺(tái)項(xiàng)目的配置:

首先需要說(shuō)明,由于訂閱號(hào)的功能比較少,如果只是進(jìn)行學(xué)習(xí),建議在 開(kāi)發(fā) => 開(kāi)發(fā)者工具中選擇使用公眾平臺(tái)測(cè)試帳號(hào)進(jìn)行學(xué)習(xí)性開(kāi)發(fā),這樣可以使用全功能的微信服務(wù),配置也比較少。
下面的配置步驟均是使用自己的賬號(hào)需要進(jìn)行的配置

  1. 開(kāi)發(fā) => 基本配置 => 公眾號(hào)開(kāi)發(fā)信息,在這里記下開(kāi)發(fā)者ID(AppID),接著開(kāi)通服務(wù),記下開(kāi)發(fā)者密碼(AppSecret),開(kāi)發(fā)中會(huì)需要輸入。
  2. 設(shè)置IP白名單,這里寫(xiě)的是自己的服務(wù)器IP地址,因?yàn)楣δ苌暇€后,需要使用這臺(tái)服務(wù)器,通過(guò)開(kāi)發(fā)者ID和密碼來(lái)向微信服務(wù)區(qū)獲取自己服務(wù)的access_token
  3. 進(jìn)行下面的后臺(tái)項(xiàng)目,目的是讓微信確定這個(gè)后臺(tái)項(xiàng)目是你的,檢驗(yàn)方法是微信發(fā)起一個(gè)get請(qǐng)求,你返回正確的返回值,啟用此配置時(shí)調(diào)用:
    1. url:接口地址,比如http://wx.my.com/forWx
    2. Token:完全自定義的一個(gè)字符串,相當(dāng)于個(gè)暗號(hào),你的返回值需要這個(gè)字符串參與拼裝。
    3. EncodingAESKey:隨機(jī)生成即可
    4. 消息加解密方式:自選,這里我使用的是明文模式

有關(guān)前端項(xiàng)目的配置:

設(shè)置 => 公眾號(hào)設(shè)置 => 功能設(shè)置 => JS接口安全域名在此處添加你的要使用微信sdk功能的網(wǎng)站的域名,比如wx.qq.com或者wx.qq.com/user,最多可寫(xiě)三個(gè),且需要驗(yàn)證。

> 驗(yàn)證的方式,就是將一個(gè)微信提供的txt文件,放在此域名對(duì)應(yīng)的放置于服務(wù)器中的web項(xiàng)目的訪問(wèn)根目錄中,需要和主文件(大部分默認(rèn)為```index.html```)放在同一級(jí),當(dāng)提交的時(shí)候,微信會(huì)進(jìn)行訪問(wèn),來(lái)獲取文件,確認(rèn)此域名是你的。

配置完成后,就可以進(jìn)行開(kāi)發(fā)了。

下面進(jìn)入代碼階段。

證明后臺(tái)項(xiàng)目和前端項(xiàng)目時(shí)我自己的

首先,上面證明服務(wù)是自己的部分,我們需要實(shí)現(xiàn)一個(gè)接口,我用http://wx.my.com/forWx打的比方,那么為了啟用配置,我需要實(shí)現(xiàn)/forWx給微信調(diào)用,下面是代碼:

node的基礎(chǔ)環(huán)境搭建省略,這里只寫(xiě)接口內(nèi)部方法了,關(guān)鍵是參數(shù)加密拼裝

const crypto = require('crypto') // 引入加密模塊
const config = require('./config') // 引入配置文件
// 提供給微信調(diào)用
server.get('/forWx', function (req, res) {
 res.header('Access-Control-Allow-Origin', '*')
 // 1.獲取微信服務(wù)器Get請(qǐng)求的參數(shù) signature、timestamp、nonce、echostr
 let signature = req.query.signature // 微信加密簽名
 let timestamp = req.query.timestamp // 時(shí)間戳
 let nonce = req.query.nonce // 隨機(jī)數(shù)
 let echostr = req.query.echost // 隨機(jī)字符串

 // 2.將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序,其中token就是設(shè)置在微信頁(yè)面中的那個(gè)自定義字符串
 let array = [config.token, timestamp, nonce]
 array.sort()

 // 3.將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
 let tempStr = array.join('')
 const hashCode = crypto.createHash('sha1') //創(chuàng)建加密類型 
 let resultCode = hashCode.update(tempStr, 'utf8').digest('hex')
 
 //4.開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信
 if (resultCode === signature) {
 res.send(echostr)
 } else {
 res.send('mismatch')
 }
})

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章名稱:node.js實(shí)現(xiàn)微信開(kāi)發(fā)之獲取用戶授權(quán)-創(chuàng)新互聯(lián)
文章路徑:http://muchs.cn/article0/eisoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作自適應(yīng)網(wǎng)站、網(wǎng)站營(yíng)銷、企業(yè)建站全網(wǎng)營(yíng)銷推廣、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司