如何在微信小程序中获得公众号的access_token?(一)

IP白名单阻碍了微信小程序云开发调用公众号API

微信小程序和公众号有很好的互补性,经常被开发者结合使用。舍得叔叔在开发微信小程序(微信租赁店)的时候遇到一个问题:在小程序里面调用公众号的API(关联服务号:舍得叔叔和小伙伴们爱摄影)。但是,公众号API在被调用的时候,需要先获取access_token,比如获取素材列表API:https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN。

获取access_token本身不难,但是公众号后台管理平台缺必须要提前填写IP白名单,也就是说,只有固定IP并出现在白名单中,才能向微信服务器请求获取access_token。注意,在小程序中云开发中,云函数可以直接获取小程序的access_token,而不需要固定IP地址,云函数目前也不能进行固定IP地址的配置。对于像舍得叔叔这样的开发者,一直采用微信小程序云开发,而没有架设自己的服务器,这是一个难题!

为获取公众号access_token而自建服务器,这对serverless信仰的舍得叔叔而言简直是侮辱!自建服务器用于获取access_token可能成为性能的瓶颈和运维的瓶颈,前面采用serverless的好处一夜之间荡然无存!

采用腾讯SCF(Serverless Cloud Function)实现access_token云函数

舍得叔叔采用腾讯SCF(Serverless Cloud Function)技术,开发了一个简单的access_token云函数,这个云函数运行在腾讯SCF环境下,配置了外网访问固定IP地址,不需要任何服务器,就实现了固定IP地址对微信服务器发起access_token请求!

有同样需求的开发者,可以在小程序云函数中直接调用舍得叔叔写的云函数,调用地址和格式:https://service-5yy1o1wv-1257613110.sh.apigw.tencentcs.com/release/getAccessToken?appid=wx25d1740123456789&secret=46c4e876bb5ab67d85f6500123456789

IP地址是:123.206.197.238,这个地址可以配置到公众号的IP白名单中。


image.png

调用的示例代码如下:

request = require('request')
let res = await (new Promise((resolve, reject) => {
    try {
        request({
                url: 'https://service-5yy1o1wv-1257613110.sh.apigw.tencentcs.com/release/getAccessToken?appid=' + appId + '&secret=' + appSecret,
                method: "GET",
                json: true,
            },
            function (err, resp, body) {
                if (err) {
                    return reject(err)
                }
                return resolve(body)
            })
    } catch (e) {
        return reject(err)
    }
}))
return {
    msg: "SUCCESS",
    access_token: res.access_token
}

如何开发腾讯云SCF,实现获取access_token云函数的详细步骤和相关代码,舍得叔叔将在如何在微信小程序中获得公众号的access_token?(二)中详细阐述。

你可能感兴趣的:(如何在微信小程序中获得公众号的access_token?(一))