微信公衆号網頁開發 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 公衆号相關 >

微信公衆号網頁開發

發表時(shí)間:2020-10-17

發布人(rén):融晨科技

浏覽次數:53

基本配置

1.設置—公衆号設置—功能設置—配置JS接口安全域名

2.開發—基本配置

發者ID(AppID) 開發者密碼(AppSecret)

3.IP白名單配置

填寫當前本地(dì / de)開發IP地(dì / de)址和(hé / huò)服務器IP地(dì / de)址

開發

jQuery + rem + flex或WeUi、SUI(阿裏巴巴共享業務事業部SDC團隊(UED))、Mint-UI(餓了(le/liǎo)麽)開發頁面
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">

1.引入JS文件

2通過config接口注入權限驗證配置

wx.config({
  debug: true, // 開啓調試模式,調用的(de)所有api的(de)返回值會在(zài)客戶端alert出(chū)來(lái),若要(yào / yāo)查看傳入的(de)參數,可以(yǐ)在(zài)pc端打開,參數信息會通過log打出(chū),僅在(zài)pc端時(shí)才會打印。
  appId: '', // 必填,公衆号的(de)唯一标識
  timestamp: , // 必填,生成簽名的(de)時(shí)間戳
  nonceStr: '', // 必填,生成簽名的(de)随機串
  signature: '',// 必填,簽名
  jsApiList: [] // 必填,需要(yào / yāo)使用的(de)JS接口列表
});

第一步GET請求access_token

access_token的(de)有效期爲(wéi / wèi)7200秒(不(bù)必反複請求)
https://api.weixin.qq.com/cgi...

  • grant_type是(shì)獲取access_token填寫client_credential
  • appid是(shì)第三方用戶唯一憑證
  • secret是(shì)第三方用戶唯一憑證密鑰,即appsecret**
//獲取到(dào)access_token示例
var url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`;
        request(url, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                console.log("access_token值" +JSON.parse(body).access_token)
            }
        });

第二步GET請求jsapi_ticket

jsapi_ticket的(de)有效期爲(wéi / wèi)7200秒(不(bù)必反複請求)
https://api.weixin.qq.com/cgi...
用第一步獲取到(dào)的(de)access_token的(de)值進行請求

var url = `https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=${access_token}&type=jsapi`
        request(url, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                console.log("jsapi_ticket值" + JSON.parse(body).ticket);
            }
        });

第三步生成算法簽名

const timestamp = parseInt(Date.now() / 1000) //生成簽名的(de)時(shí)間戳
const nonceStr = Math.random().toString(36).substr(2, 15) //生成簽名的(de)随機串
let jsapi_ticket //在(zài)第二步生成
let url//簽名用的(de)url必須是(shì)調用JS接口頁面的(de)完整URL(前端請求服務端接口帶入)

const sha1 = require('sha1')//這(zhè)裏需要(yào / yāo)引入一個(gè)插件npm install sha1

router.get('/', (req, res, next) => {

const url = decodeURIComponent(req.query.url)//這(zhè)裏的(de)url采用前端加密,後端解密的(de)形式獲取
const timestamp = parseInt(Date.now() / 1000)
const nonceStr = Math.random().toString(36).substr(2, 15)
let jsapi_ticket = "在(zài)第二步拿到(dào)了(le/liǎo)"

const params = {
        nonceStr,
        jsapi_ticket,
        timestamp,
        url
    }
    const string = Object.keys(params).sort().map(key => `${key.toLowerCase()}=${params[key]}`).join('&')
    const signature = sha1(string)//生成的(de)簽名
    
    res.status(200).json({//将參數返回給前端
        timestamp,
        signature,
        nonceStr
    });
    
    })


module.exports = router;
    

3前端靜态頁面實際調用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    
    <h1>分享頁面</h1>
    <script src="../static/js/jweixin-1.4.0.js"></script>
    <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
    <script>
    function wxFN(){
        $.ajax({
                type: "get",
                url: `http://*************/api/wx?url=${encodeURIComponent(location.href.split('#')[0])}`,
                success: function(data) {
                    console.log(data);
                    wx.config({
                        debug: true, // 開啓調試模式,調用的(de)所有api的(de)返回值會在(zài)客戶端alert出(chū)來(lái),若要(yào / yāo)查看傳入的(de)參數,可以(yǐ)在(zài)pc端打開,參數信息會通過log打出(chū),僅在(zài)pc端時(shí)才會打印。
                        appId: data.appId, // 必填,公衆号的(de)唯一标識
                        timestamp: data.timestamp, // 必填,生成簽名的(de)時(shí)間戳
                        nonceStr: data.nonceStr, // 必填,生成簽名的(de)随機串
                        signature: data.signature, // 必填,簽名
                        jsApiList: ['updateAppMessageShareData'] // 必填,需要(yào / yāo)使用的(de)JS接口列表

相關案例查看更多