亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

node微信開(kāi)發(fā)之獲取access_token+自定義菜單

 更新時(shí)間:2019年03月17日 16:03:31   作者:xiadd  
這篇文章主要介紹了node微信開(kāi)發(fā)之獲取access_token+自定義菜單,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

上一篇:自動(dòng)回復(fù)的實(shí)現(xiàn)

這兩天終于把獲取access_token+自定義菜單+授權(quán)登錄+獲取用戶信息部分完成了,nodejs其實(shí)不是很熟悉,所以估計(jì)有很多特性沒(méi)用起來(lái)的,還有很多冗余代碼以及各種問(wèn)題,只能說(shuō)功能實(shí)現(xiàn)了,大家多多擔(dān)待吧。

獲取access_token

因?yàn)檎{(diào)用所有公眾號(hào)的接口都需要用到access_token,所以必須先將access_token緩存起來(lái),方便以后使用,access_token的有效時(shí)間為2小時(shí),所以需要定時(shí)更新,下面是代碼實(shí)現(xiàn)。

有一點(diǎn)需要注意,本文會(huì)提到兩個(gè)access_token,還有一個(gè)是oauth時(shí)會(huì)用到,所以大家不要搞混了。

access_token的獲取

access_token的獲取相對(duì)來(lái)說(shuō)很簡(jiǎn)單了,就是請(qǐng)求一個(gè)鏈接附加參數(shù)得到access_token,代碼如下:

const getAccessToken = function () {
 let queryParams = {
  'grant_type': 'client_credential',
  'appid': config.appId,
  'secret': config.appSecret
 };

 let wxGetAccessTokenBaseUrl = 'https://api.weixin.qq.com/cgi-bin/token?'+qs.stringify(queryParams);
 let options = {
  method: 'GET',
  url: wxGetAccessTokenBaseUrl
 };
 return new Promise((resolve, reject) => {
  request(options, function (err, res, body) {
   if (res) {
    resolve(JSON.parse(body));
   } else {
    reject(err);
   }
  });
 })
};

請(qǐng)求的三個(gè)參數(shù)也比較簡(jiǎn)潔:

參數(shù) 是否必須 說(shuō)明
grant_type 獲取access_token填寫client_credential
appid 第三方用戶唯一憑證
secret 第三方用戶唯一憑證密鑰,即appsecret

access_token的保存

保存有很多種方法,放在緩存里等,我這邊是存放在一個(gè)文件里,因?yàn)閮H僅是一個(gè)示例,定時(shí)7000s更新。

//保存與更新
const saveToken = function () {
 getAccessToken().then(res => {
  let token = res['access_token'];
  fs.writeFile('./token', token, function (err) {
   
  });
 })
};

const refreshToken = function () {
 saveToken();
 setInterval(function () {
  saveToken();
 }, 7000*1000);
};

這樣access_token就能做到定時(shí)更新了,注意,如果不是測(cè)試好獲取token的次數(shù)是有限制的,不過(guò)一般沒(méi)什么問(wèn)題,測(cè)試最好還是在測(cè)試號(hào)上進(jìn)行。

自定義菜單

獲取access_token后自定義菜單的實(shí)現(xiàn)就非常簡(jiǎn)單了,這里僅僅簡(jiǎn)單講一下請(qǐng)求,具體菜單內(nèi)容請(qǐng)看微信的文檔。
http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

但是body要帶上菜單的內(nèi)容,就是json數(shù)據(jù),但是微信返回的數(shù)據(jù)是string類型,所以下面也要注意,可能在這邊會(huì)遇到問(wèn)題。簡(jiǎn)單代碼如下:

'use strict';
const fs = require('fs');
const request = require('request');

//token,因?yàn)閠oken是存在文件里的所以這里進(jìn)行文件讀取得到token
const token = fs.readFileSync('./token').toString();

//常用type為view和click,分別為點(diǎn)擊事件和鏈接
var menus = {
 "button": [
  {
   "name": "測(cè)試菜單",
   "sub_button": [
    {
     "type": "view",
     "name": "授權(quán)登錄",
     "url": "http://wuyrsp3tma.proxy.qqbrowser.cc/auth"
    }]
  }]
};

function createMenu() {
 let options = {
  url: 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' + token,
  form: JSON.stringify(menus),
  headers: {
   'Content-Type': 'application/x-www-form-urlencoded'
  }
 };
 
 request.post(options, function (err, res, body) {
  if (err) {
   console.log(err)
  }else {
   console.log(body);
  }
 })
 
}

module.exports = createMenu;

這樣在服務(wù)器啟動(dòng)的時(shí)候調(diào)用這個(gè)模塊就可以創(chuàng)建一個(gè)簡(jiǎn)單的自定義菜單了:

好這部分就算結(jié)束了,本來(lái)想連著jssdk一起的但是那樣就顯得太長(zhǎng)了,但是那部分代碼已經(jīng)完成了,所以大家可以自行看看代碼。

github地址奉上:https://github.com/xiadd/shorthand 歡迎star

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用?Node-RED對(duì)?MQTT?數(shù)據(jù)流處理

    使用?Node-RED對(duì)?MQTT?數(shù)據(jù)流處理

    本文將介紹使用 Node-RED 連接到 MQTT 服務(wù)器,并對(duì) MQTT 數(shù)據(jù)進(jìn)行過(guò)濾和處理后再將其發(fā)送至 MQTT 服務(wù)器的完整操作流程。讀者可以快速了解如何使用 Node-RED 對(duì) MQTT 數(shù)據(jù)進(jìn)行簡(jiǎn)單的流處理
    2022-05-05
  • Node.js HTTP服務(wù)器中的文件、圖片上傳的方法

    Node.js HTTP服務(wù)器中的文件、圖片上傳的方法

    這篇文章主要介紹了Node.js HTTP服務(wù)器中的文件、圖片上傳的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法

    Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法

    這篇文章主要介紹了Node使用koa2實(shí)現(xiàn)一個(gè)簡(jiǎn)單JWT鑒權(quán)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 在Node.js中使用Express實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能

    在Node.js中使用Express實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能

    在現(xiàn)代Web應(yīng)用中,視頻內(nèi)容和互動(dòng)功能(如評(píng)論)的結(jié)合極大地增加了用戶的參與度,本文將通過(guò)一個(gè)具體的例子,展示如何在Node.js環(huán)境中使用Express框架來(lái)實(shí)現(xiàn)視頻評(píng)論的列表展示和刪除功能,需要的朋友可以參考下
    2024-04-04
  • nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)

    nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)

    這篇文章主要介紹了nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)的方法,有需要的小伙伴可以參考下。
    2015-05-05
  • 阿里大于短信驗(yàn)證碼node koa2的實(shí)現(xiàn)代碼(最新)

    阿里大于短信驗(yàn)證碼node koa2的實(shí)現(xiàn)代碼(最新)

    本文給大家分享一個(gè)最新版阿里大于短信驗(yàn)證碼node koa2的實(shí)現(xiàn)代碼及注意事項(xiàng),需要的朋友參考下吧
    2017-09-09
  • 使用Redis和Node.js來(lái)開(kāi)發(fā)簡(jiǎn)單的實(shí)時(shí)聊天功能

    使用Redis和Node.js來(lái)開(kāi)發(fā)簡(jiǎn)單的實(shí)時(shí)聊天功能

    在眾多實(shí)時(shí)通信的技術(shù)中,Redis和Node.js的結(jié)合是一種非常強(qiáng)大和流行的選擇,Redis是一種高性能的鍵值存儲(chǔ)數(shù)據(jù)庫(kù),而Node.js是一個(gè)基于事件驅(qū)動(dòng)的JavaScript運(yùn)行時(shí)環(huán)境,兩者的結(jié)合可以輕松實(shí)現(xiàn)實(shí)時(shí)聊天功能,本文將指導(dǎo)您使用Redis和Node.js來(lái)開(kāi)發(fā)一個(gè)簡(jiǎn)單的實(shí)時(shí)聊天功能
    2024-08-08
  • 使用Node實(shí)現(xiàn)Git倉(cāng)庫(kù)批量克隆的操作步驟

    使用Node實(shí)現(xiàn)Git倉(cāng)庫(kù)批量克隆的操作步驟

    分享一個(gè)node腳本,通過(guò)調(diào)用gitee的OpenApi獲取自己的代碼倉(cāng)庫(kù)列表,達(dá)到批量克隆項(xiàng)目的效果,文中通過(guò)代碼示例和圖文講解的非常詳細(xì),感興趣的小伙伴可以參考閱讀一下
    2024-04-04
  • nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比較

    nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEq

    這篇文章主要介紹了node項(xiàng)目中遇到使用斷言測(cè)試程序,看了下nodejs的api之后,對(duì)nodejs中assert斷言的幾個(gè)方法做個(gè)簡(jiǎn)單的記錄,需要的朋友可以參考下
    2017-09-09
  • Node.js中操作MongoDB的CRUD操作指南

    Node.js中操作MongoDB的CRUD操作指南

    在Node.js中操作MongoDB常見(jiàn)的庫(kù)有mongodb原生驅(qū)動(dòng)和mongoose等,本文將使用mongodb官方驅(qū)動(dòng)包來(lái)進(jìn)行示例,在開(kāi)始之前,請(qǐng)確保已經(jīng)安裝了MongoDB數(shù)據(jù)庫(kù)并且在本地啟動(dòng)了MongoDB服務(wù),需要的朋友可以參考下
    2024-01-01

最新評(píng)論