Node.js access_token 實作微信存取與刷新實例
本文主要介紹了Node.js微信 access_token ( jsapi_ticket ) 訪問與刷新的範例,具有一定的參考價值,有興趣的可以了解一一下,希望能幫助到大家。
access_token
微信文件裡存在兩種access_token:普通 access_token 和 網頁授權 access_token。具體差異參考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
以下提到的access_token 均為普通的access_token
1. 首先我們先去看看是如何請求access_token 的? 微信公眾平台技術文檔
GET請求:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
正常回傳:{"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 官方文件說明
#
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 })
PHP實作加密文字檔案並限制特定頁面的存取的效果_php實例
以上是Node.js access_token 實作微信存取與刷新實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SQL IF 語句用於有條件地執行 SQL 語句,語法為: IF (condition) THEN {語句} ELSE {語句} END IF;。條件可以是任何有效的 SQL 表達式,如果條件為真,執行 THEN 子句;如果條件為假,執行 ELSE 子句。 IF 語句可以嵌套,允許更複雜的條件檢查。

解決 Vue Axios 跨域問題的方法包括:服務器端配置 CORS 頭使用 Axios 代理使用 JSONP使用 WebSocket使用 CORS 插件

如何在 Apache 中配置 Zend?在 Apache Web 服務器中配置 Zend Framework 的步驟如下:安裝 Zend Framework 並解壓到 Web 服務器目錄中。創建 .htaccess 文件。創建 Zend 應用程序目錄並添加 index.php 文件。配置 Zend 應用程序(application.ini)。重新啟動 Apache Web 服務器。

多線程的好處在於能提升性能和資源利用率,尤其適用於處理大量數據或執行耗時操作。它允許同時執行多個任務,提高效率。然而,線程過多會導致性能下降,因此需要根據 CPU 核心數和任務特性謹慎選擇線程數。另外,多線程編程涉及死鎖和競態條件等挑戰,需要使用同步機制解決,需要具備紮實的並發編程知識,權衡利弊並謹慎使用。

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

PHPMyAdmin安全防禦策略的關鍵在於:1. 使用最新版PHPMyAdmin及定期更新PHP和MySQL;2. 嚴格控制訪問權限,使用.htaccess或Web服務器訪問控制;3. 啟用強密碼和雙因素認證;4. 定期備份數據庫;5. 仔細檢查配置文件,避免暴露敏感信息;6. 使用Web應用防火牆(WAF);7. 進行安全審計。 這些措施能夠有效降低PHPMyAdmin因配置不當、版本過舊或環境安全隱患導致的安全風險,保障數據庫安全。

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko
