📜  热获取 access_token 而不是 url - Javascript (1)

📅  最后修改于: 2023-12-03 15:27:05.104000             🧑  作者: Mango

热获取 access_token 而不是 url - Javascript

在使用第三方 API 时,通常需要传递 access_token 才能进行数据请求。获取 access_token 的过程中,常规做法是直接将 url 发送给服务器,服务器再返回 access_token,但这样的方式存在一些问题,例如安全性、实时性等。通过热获取 access_token,可以更好地解决这些问题。本文将介绍如何使用 Javascript 进行热获取 access_token。

实现流程
  1. 获取第三方 API 的 appid 和 appsecret,并将其保存在全局变量中。
const APPID = 'your appid'
const APPSECRET = 'your appsecret'
  1. 创建一个全局变量用于存储 access_token。
let access_token;
  1. 编写获取 access_token 函数。
function getAccessToken() {
  // 如果 access_token 存在并且没有过期,直接返回 access_token
  if (access_token && Date.now() < access_token.expires_in) {
    return Promise.resolve(access_token.access_token)
  }
  // 发送请求获取 access_token
  const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`
  return fetch(url)
      .then(response => response.json())
      .then(res => {
        // 将获取到的 access_token 存入全局变量
        access_token = {
          access_token: res.access_token,
          expires_in: Date.now() + res.expires_in * 1000
        };
        return access_token.access_token;
      })
}
  1. 在需要使用 access_token 的地方调用 getAccessToken 函数。
getAccessToken().then(access_token => {
  // 发送请求,使用 access_token
})
代码片段
const APPID = 'your appid'
const APPSECRET = 'your appsecret'

let access_token;

function getAccessToken() {
  if (access_token && Date.now() < access_token.expires_in) {
    return Promise.resolve(access_token.access_token)
  }
  const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`
  return fetch(url)
      .then(response => response.json())
      .then(res => {
        access_token = {
          access_token: res.access_token,
          expires_in: Date.now() + res.expires_in * 1000
        };
        return access_token.access_token;
      })
}

getAccessToken().then(access_token => {
  // 使用 access_token 的地方
})
结语

本文介绍了通过热获取 access_token 的方式,可以更加安全、实时地使用第三方 API,让程序更稳定、更优秀。