由于给朋友做的预约小程序需要通过公众号给用户推送消息(小程序长期推送已被腾讯阉割),所以稍微看了下实现方法:
- 用户关注公众号
- 公众号推送用户关注/解除关注消息到服务器配置的URL
- 通过函数计算实现消息接收并保存到表格存储中匹配用户openid及UnionID(需要将小程序、公众号关联到同一个开发者账号)
- 推送消息时,即可通过UnionID查找公众号上用户的openid进行消息推送
思路拟好,接下来就开干了,但是马上就遇到奇奇怪怪的问题...
【坑1】
阿里云函数计算收不到微信发过来的Get请求...
别问我为什么,我也想知道
【坑2】
华为函数工作流,API网关显示4XX错误,收是收到了,但是没法调用具体执行函数...
到这里,想着腾讯自家的应该会支持果断放弃尝试
【坑3】
腾讯SCF云函数上代码:
'use strict';
exports.main_handler = async (event, context, callback) => {
const { queryString } = event
const { echostr, signature, nonce, timestamp } = queryString
return echostr
};
搞上之后,却发现返回后还是一直提示Token校验失败
看调用日志,返回echostr看上去也没错?!
看社区也有人出现类似问题,解决的办法是:需要返回不带双引号""的内容
但是云函数返回不能指定返回类型,这可咋办?
【使用API网关开启集成响应解决问题】
具体介绍:看这里
在编辑API界面中,勾选启用集成响应
重新发布API后,代码返回中指定headers即可:
'use strict';
exports.main_handler = async (event, context, callback) => {
const { queryString } = event
const { echostr, signature, nonce, timestamp } = queryString
console.log(queryString)
return {
"isBase64Encoded": false,
"statusCode": 200,
"headers": {"Content-Type":"text/plain"},
"body": echostr
}
};
如此,校验Token就成功了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。