access_token
微信文档里存在两种access_token:普通 access_token 和 网页授权 access_token。具体区别参考:https://mp.weixin.qq.com/wiki"external nofollow" target="_blank" href="https://mp.weixin.qq.com/wiki">微信公众平台技术文档
GET请求:https://api.weixin.qq.com/cgi-bin/token"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
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。