国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Jiavan / 1074人閱讀

摘要:微信文檔里存在兩種普通和網頁授權。這個就是官方文檔說明上面關于的例子已經說得很詳細了,處理起來也大同小異,所以下面直接貼代碼了需要注意一點獲取需要依賴,下面的代碼直接依賴了上面所寫的使用這個就是

access_token

微信文檔里存在兩種access_token:普通 access_token 和 網頁授權 access_token。具體區別參考:https://mp.weixin.qq.com/wiki...

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

1. 首先我們先去看看是如何請求 access_token 的? 微信公眾平臺技術文檔

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

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

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

guard_dog 會生成 .dog 文件,每個文件對應一個KEY

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

guard_dog.init(KEY, (handler) => {    // KEY是guard_dog存取數據的鍵名
    // 拿到數據后調用 handler
    handler(DATA, EXPIREDS_IN)    // DATA是要持久化的數據,EXPIREDS_IN是數據的有效時間,單位是秒
}, DIR)    // DIR是 .dog 文件的存放目錄,這個參數可以不傳
4. 現在把以上兩塊代碼合并起來就是我們要的效果
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請換成你的 appid
            secret: APPSECRET    // APPSECRET請換成你的 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 多傳個參數
5. guard_dog 初始化這個 key 之后,獲取到的都是有效的值了。guard_dog 獲取值代碼如下:
guard_dog.get("ACCESS_TOKEN", (data) => {    // 上面初始化時用的鍵名為"ACCESS_TOKEN",所以這里取值也要用這個鍵名
    // 在這里拿到的 data 就是 access_token 了
})
6.如果想用著方便點,可以直接封裝成一個模塊

access_token.js

const request = require("request")
const guard_dog = require("guard_dog")
// 加載這個模塊的時候給 ACCESS_TOKEN 這個鍵名初始化
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請換成你的 appid
            secret: APPSECRET    // APPSECRET請換成你的 appsecret
        }
    }, (err, res, body) => {
        if (err) {
            console.log(err)
            return
        }
        console.log(body)
        if (body.errcode) {
            return
        }
        handler(body.access_token, body.expires_in)
    })
}) 
// 只要向外暴露一個獲取值的方法就可以了
module.exports = function (callback) {
    guard_dog.get("ACCESS_TOKEN", callback)
}

使用:

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

jsapi_ticket 官方文檔說明
上面關于 access_token 的例子已經說得很詳細了,jsapi_ticket 處理起來也大同小異,所以下面直接貼代碼了:

(需要注意一點:獲取 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) => {
    // 這個 data 就是 jsapi_ticket
})

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88792.html

相關文章

  • 微信開發-自定義分享卡片-node.js實現

    摘要:本篇主要講述,如何在微信中打開自家的頁面,在然后在用戶分享的時候,能由我們自定義分享出去后,展示的頁面卡片中的頁面標題頁面描述頁面圖片和分享鏈接。 本篇主要講述,如何在微信中打開自家的頁面,在然后在用戶分享的時候,能由我們自定義分享出去后,展示的頁面卡片中的頁面標題、頁面描述、頁面圖片和分享鏈接。 此功能,具體的來說,是: 在微信打開自家的頁面 點擊右上角微信的功能按鈕,出現功能菜單...

    Object 評論0 收藏0
  • vue使用微信JS-SDK實現分享功能

    摘要:最近開發微信公眾號內嵌頁面,使用搭建的項目,由于業務需求,需要實現微信自定義分享功能,所以項目中集成微信。 最近開發微信公眾號內嵌H5頁面,使用vue搭建的項目,由于業務需求,需要實現微信自定義分享功能,所以項目中集成微信JS-SDK。微信JS-SDK是微信公眾平臺面向網頁開發者提供的基于微信內的網頁開發工具包。通過使用微信JS-SDK,網頁開發者可借助微信高效地使用拍照、選圖、語音、...

    ShowerSun 評論0 收藏0
  • 微信授權和sdk加密算法

    摘要:準備工作申請服務器公眾號基本配置這些微信公眾平臺上都有,就不介紹了,接下來進入正題。隨著微信管控越發嚴厲,像一些最基本的網頁轉發都需要授權處理才能獲取到圖片和描述,描述審查也是相當嚴格。 準備工作: 申請服務器 公眾號 基本配置 這些微信公眾平臺上都有,就不介紹了,接下來進入正題。 ? 微信網頁授權 node js-sdk 授權公眾平臺的技術文檔目的為了簡明扼要的交代接口的使用,語句難...

    gaara 評論0 收藏0
  • 如何正確的在項目中接入微信JS-SDK

    摘要:進過下面的步驟,一步一步的配置,就可以讓你正確的在項目中引入微信的。在進行了正確的微信文件引入后看上面在頁面中調用如下代碼就可以注入權限驗證配置。可以通過微信提供的兩個接口來進行事件回調。到這為止,微信的接入就完成了。 微信JS-SDK的功能 如果你點進來,那么我相信你應該知道微信的JS-SDK可以用來做什么了。微信的官方文檔描述如下。 微信JS-SDK是微信公眾平臺面向網頁開發者提供...

    ivyzhang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<