突然想到之前小程序开发的时候遇到的问题,记录一下。
在微信小程序中当时有一个调用公众号实时文章的功能:
大家都知道如果要调取公众号文章中的内容除了要获取公众号的appID和SECRET之外 还有比较麻烦的一点是IP地址的设置,因为小程序云开发去直接调用公众号的内容,IP是随机变化的,调取公众号的后台接口的时候会被阻拦,我看有的朋友建议是在公众号后台直接把所有可能出现过的IP地址统一加到公众号的IP白名单中,这种方法可能有用,但是出现IP的变化太多了,反正我自己试了好几次,没有成功过。
我们可以利用**腾讯云的云函数**功能。在这里边建立一个函数。主要的一步来了,然后是设置固定出口IP,如图函数管理-》函数配置-》编辑-》固定出口IP
设置完成之后可以在网络配置中看到生成的IP,此时你将这个IP加到公众号后台的白名单即可
关于如何访问腾讯云上的云函数,如下所示:
在函数服务-》触发管理-》访问路径,将这个路径复制下来即可。如图:
以下是小程序云开发中调用腾讯云函数:
async getWechatAccessToken() {
let token_url = '腾讯云访问路径?APPID=' +this.appid+ '&'+'SECRET='+this.secret;
let options={
url:token_url,
method:"GET"
}
const rp =
new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) {
reject(error);
}
resolve(response);
});
});
const result = await rp;
return (typeof result.body === 'object') ? result.body : JSON.parse(result.body);;
}
以下函数是腾讯云中调用公众号后台文章的代码。
const request = require('request')
//const QUERY_URL = 'https://api.weixin.qq.com/tcb/databasecollectionget?access_token='
exports.main_handler = async (event, context, callback) => {
const APPID = event.queryString.APPID; // 公众号 APPID
const SECRET = event.queryString.SECRET; // 公众号 Secret
//const ENV_ID = ''
const TOKEN_URL = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + APPID + '&' + 'secret=' + SECRET;
let options={
url:TOKEN_URL,
method:"GET"
}
const rp =
new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) {
reject(error);
}
resolve(response);
});
});
const result = await rp;
return (typeof result.body === 'object') ? result.body : JSON.parse(result.body);
};
好了 基本到此结束了,突然想起来了这个坎,记录一下,以防自己后期忘记,整体思路就是:
云开发调用云函数,云函数设置固定出口IP,公众号文章后台IP白名单设置即可。