在微信小程序中,调用大部分微信开放接口都需要携带有效的接口调用凭证,即 access_token。access_token 是微信接口访问的令牌,每个令牌的有效期为两小时。获取 access_token 是开发者与微信服务器之间的交互的一部分。

以下是获取 access_token 的基本步骤:

1. 小程序端通过 wx.login 获取 code:
   wx.login({
     success: function(res) {
       if (res.code) {
         const code = res.code;
         // 将 code 发送到服务器
         // 服务器通过 code 获取 openid 和 session_key,然后再获取 access_token
       } else {
         console.error('登录失败!' + res.errMsg);
       }
     }
   });

2. 服务器通过 code 获取 openid 和 session_key:

   使用微信提供的登录凭证校验接口,向微信服务器发送请求,获取用户的 openid 和 session_key。
   const appid = 'your_appid';
   const appsecret = 'your_appsecret';
   const code = 'code_from_client';

   const apiUrl = `https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${appsecret}&js_code=${code}&grant_type=authorization_code`;

   request(apiUrl, function(error, response, body) {
     if (!error && response.statusCode === 200) {
       const data = JSON.parse(body);
       const openid = data.openid;
       const sessionKey = data.session_key;
       // 使用 openid 和 session_key 获取 access_token
     } else {
       console.error('获取 openid 和 session_key 失败!', error);
     }
   });

3. 使用 openid 和 session_key 获取 access_token:

   使用 openid 和 session_key 可以通过微信提供的接口获取 access_token。
   const openid = 'openid_from_server';
   const sessionKey = 'session_key_from_server';

   const apiUrl = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${appsecret}`;

   request(apiUrl, function(error, response, body) {
     if (!error && response.statusCode === 200) {
       const data = JSON.parse(body);
       const accessToken = data.access_token;
       console.log('Access Token:', accessToken);
       // 使用 access_token 调用其他微信接口
     } else {
       console.error('获取 access_token 失败!', error);
     }
   });

需要注意的是,access_token 是有过期时间的,过期后需要重新获取。在实际应用中,建议将 access_token 缓存起来,并在过期前更新。并且,请确保对 access_token 进行安全存储,不要暴露在不安全的环境中。


转载请注明出处:http://www.zyzy.cn/article/detail/1083/微信小程序