成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Node.js 輕松搞定微信 access_token ( jsapi_ticket ) 存取與刷新

Jiavan / 1144人閱讀

摘要:微信文檔里存在兩種普通和網(wǎng)頁(yè)授權(quán)。這個(gè)就是官方文檔說(shuō)明上面關(guān)于的例子已經(jīng)說(shuō)得很詳細(xì)了,處理起來(lái)也大同小異,所以下面直接貼代碼了需要注意一點(diǎn)獲取需要依賴,下面的代碼直接依賴了上面所寫的使用這個(gè)就是

access_token

微信文檔里存在兩種access_token:普通 access_token 和 網(wǎng)頁(yè)授權(quán) access_token。具體區(qū)別參考:https://mp.weixin.qq.com/wiki...

以下提到的 access_token 均為普通的 access_token

1. 首先我們先去看看是如何請(qǐng)求 access_token 的? 微信公眾平臺(tái)技術(shù)文檔

GET請(qǐng)求:https://api.weixin.qq.com/cgi...
正常返回:{"access_token":"ACCESS_TOKEN","expires_in":7200}
錯(cuò)誤返回:{"errcode":40013,"errmsg":"invalid appid"}

2. 所以獲取 access_token 的代碼如下:
const request = require("request")    // 請(qǐng)安裝第三方包 request

request.get({
        uri: "https://api.weixin.qq.com/cgi-bin/token",
        json: true,
        qs: {
            grant_type: "client_credential",
            appid: APPID,    // APPID請(qǐng)換成你的 appid
            secret: APPSECRET    // APPSECRET請(qǐng)換成你的 appsecret
        }
    }, (err, res, body) => {
        if (err) {
            console.log(err)
            return
        }
        console.log(body)
        if (body.errcode) {
            // 返回錯(cuò)誤時(shí)的處理
            return
        }
})
3. guard_dog 實(shí)現(xiàn)數(shù)據(jù)持久化和定時(shí)刷新

guard_dog 會(huì)生成 .dog 文件,每個(gè)文件對(duì)應(yīng)一個(gè)KEY

const guard_dog = require("guard_dog")    // 請(qǐng)安裝第三方包 guard_dog

guard_dog.init(KEY, (handler) => {    // KEY是guard_dog存取數(shù)據(jù)的鍵名
    // 拿到數(shù)據(jù)后調(diào)用 handler
    handler(DATA, EXPIREDS_IN)    // DATA是要持久化的數(shù)據(jù),EXPIREDS_IN是數(shù)據(jù)的有效時(shí)間,單位是秒
}, DIR)    // DIR是 .dog 文件的存放目錄,這個(gè)參數(shù)可以不傳
4. 現(xiàn)在把以上兩塊代碼合并起來(lái)就是我們要的效果
const request = require("request")
const guard_dog = require("guard_dog")

guard_dog.init("ACCESS_TOKEN", (handler) => {
    request.get({
        uri: "https://api.weixin.qq.com/cgi-bin/token",
        json: true,
        qs: {
            grant_type: "client_credential",
            appid: APPID,    // APPID請(qǐng)換成你的 appid
            secret: APPSECRET    // APPSECRET請(qǐng)換成你的 appsecret
        }
    }, (err, res, body) => {
        if (err) {
            console.log(err)
            return
        }
        console.log(body)
        if (body.errcode) {
            return
        }
        handler(body.access_token, body.expires_in)
    })
})    // 如有需要指定目錄,可以再給 guard_dog.init 多傳個(gè)參數(shù)
5. guard_dog 初始化這個(gè) key 之后,獲取到的都是有效的值了。guard_dog 獲取值代碼如下:
guard_dog.get("ACCESS_TOKEN", (data) => {    // 上面初始化時(shí)用的鍵名為"ACCESS_TOKEN",所以這里取值也要用這個(gè)鍵名
    // 在這里拿到的 data 就是 access_token 了
})
6.如果想用著方便點(diǎn),可以直接封裝成一個(gè)模塊

access_token.js

const request = require("request")
const guard_dog = require("guard_dog")
// 加載這個(gè)模塊的時(shí)候給 ACCESS_TOKEN 這個(gè)鍵名初始化
guard_dog.init("ACCESS_TOKEN", (handler) => {
    request.get({
        uri: "https://api.weixin.qq.com/cgi-bin/token",
        json: true,
        qs: {
            grant_type: "client_credential",
            appid: APPID,    // APPID請(qǐng)換成你的 appid
            secret: APPSECRET    // APPSECRET請(qǐng)換成你的 appsecret
        }
    }, (err, res, body) => {
        if (err) {
            console.log(err)
            return
        }
        console.log(body)
        if (body.errcode) {
            return
        }
        handler(body.access_token, body.expires_in)
    })
}) 
// 只要向外暴露一個(gè)獲取值的方法就可以了
module.exports = function (callback) {
    guard_dog.get("ACCESS_TOKEN", callback)
}

使用:

const access_token = require("./access_token")    // 這里把這個(gè)模塊與 access_token 模塊當(dāng)成在同一目錄下來(lái)作為例子。
access_token((data) => {
    // 這個(gè) data 就是 access_token
})
jsapi_ticket

jsapi_ticket 官方文檔說(shuō)明
上面關(guān)于 access_token 的例子已經(jīng)說(shuō)得很詳細(xì)了,jsapi_ticket 處理起來(lái)也大同小異,所以下面直接貼代碼了:

(需要注意一點(diǎn):獲取 jsapi_ticket 需要依賴 access_token,下面的代碼直接依賴了上面所寫的 access_token.js)

jsapi_ticket.js

const request = require("request")
const guard_dog = require("guard_dog")
const access_token = require("./access_token")

guard_dog.init("JSAPI_TICKET", (handler) => {
    access_token((access_token) => {
        request.get({
            uri: "https://api.weixin.qq.com/cgi-bin/ticket/getticket",
            json: true,
            qs: {
                access_token: access_token,
                type: "jsapi"
            }
        }, (err, res, body) => {
            if (err) {
                console.log(err)
                return
            }
            console.log(body)
            if (body.errcode) {
                return
            }
            handler(body.ticket, body.expires_in)
        })
    })
})

module.exports = function (callback) {
    guard_dog.get("JSAPI_TICKET", callback)
}

使用:

const jsapi_ticket = require("./jsapi_ticket")
jsapi_ticket((data) => {
    // 這個(gè) data 就是 jsapi_ticket
})

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/88792.html

相關(guān)文章

  • 微信開發(fā)-自定義分享卡片-node.js實(shí)現(xiàn)

    摘要:本篇主要講述,如何在微信中打開自家的頁(yè)面,在然后在用戶分享的時(shí)候,能由我們自定義分享出去后,展示的頁(yè)面卡片中的頁(yè)面標(biāo)題頁(yè)面描述頁(yè)面圖片和分享鏈接。 本篇主要講述,如何在微信中打開自家的頁(yè)面,在然后在用戶分享的時(shí)候,能由我們自定義分享出去后,展示的頁(yè)面卡片中的頁(yè)面標(biāo)題、頁(yè)面描述、頁(yè)面圖片和分享鏈接。 此功能,具體的來(lái)說(shuō),是: 在微信打開自家的頁(yè)面 點(diǎn)擊右上角微信的功能按鈕,出現(xiàn)功能菜單...

    Object 評(píng)論0 收藏0
  • vue使用微信JS-SDK實(shí)現(xiàn)分享功能

    摘要:最近開發(fā)微信公眾號(hào)內(nèi)嵌頁(yè)面,使用搭建的項(xiàng)目,由于業(yè)務(wù)需求,需要實(shí)現(xiàn)微信自定義分享功能,所以項(xiàng)目中集成微信。 最近開發(fā)微信公眾號(hào)內(nèi)嵌H5頁(yè)面,使用vue搭建的項(xiàng)目,由于業(yè)務(wù)需求,需要實(shí)現(xiàn)微信自定義分享功能,所以項(xiàng)目中集成微信JS-SDK。微信JS-SDK是微信公眾平臺(tái)面向網(wǎng)頁(yè)開發(fā)者提供的基于微信內(nèi)的網(wǎng)頁(yè)開發(fā)工具包。通過(guò)使用微信JS-SDK,網(wǎng)頁(yè)開發(fā)者可借助微信高效地使用拍照、選圖、語(yǔ)音、...

    ShowerSun 評(píng)論0 收藏0
  • 微信授權(quán)和sdk加密算法

    摘要:準(zhǔn)備工作申請(qǐng)服務(wù)器公眾號(hào)基本配置這些微信公眾平臺(tái)上都有,就不介紹了,接下來(lái)進(jìn)入正題。隨著微信管控越發(fā)嚴(yán)厲,像一些最基本的網(wǎng)頁(yè)轉(zhuǎn)發(fā)都需要授權(quán)處理才能獲取到圖片和描述,描述審查也是相當(dāng)嚴(yán)格。 準(zhǔn)備工作: 申請(qǐng)服務(wù)器 公眾號(hào) 基本配置 這些微信公眾平臺(tái)上都有,就不介紹了,接下來(lái)進(jìn)入正題。 ? 微信網(wǎng)頁(yè)授權(quán) node js-sdk 授權(quán)公眾平臺(tái)的技術(shù)文檔目的為了簡(jiǎn)明扼要的交代接口的使用,語(yǔ)句難...

    gaara 評(píng)論0 收藏0
  • 如何正確的在項(xiàng)目中接入微信JS-SDK

    摘要:進(jìn)過(guò)下面的步驟,一步一步的配置,就可以讓你正確的在項(xiàng)目中引入微信的。在進(jìn)行了正確的微信文件引入后看上面在頁(yè)面中調(diào)用如下代碼就可以注入權(quán)限驗(yàn)證配置??梢酝ㄟ^(guò)微信提供的兩個(gè)接口來(lái)進(jìn)行事件回調(diào)。到這為止,微信的接入就完成了。 微信JS-SDK的功能 如果你點(diǎn)進(jìn)來(lái),那么我相信你應(yīng)該知道微信的JS-SDK可以用來(lái)做什么了。微信的官方文檔描述如下。 微信JS-SDK是微信公眾平臺(tái)面向網(wǎng)頁(yè)開發(fā)者提供...

    ivyzhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<