一次微信公众号服务器配置URL经历

由于给朋友做的预约小程序需要通过公众号给用户推送消息(小程序长期推送已被腾讯阉割),所以稍微看了下实现方法:

  1. 用户关注公众号
  2. 公众号推送用户关注/解除关注消息到服务器配置的URL
  3. 通过函数计算实现消息接收并保存到表格存储中匹配用户openid及UnionID(需要将小程序、公众号关联到同一个开发者账号)
  4. 推送消息时,即可通过UnionID查找公众号上用户的openid进行消息推送

思路拟好,接下来就开干了,但是马上就遇到奇奇怪怪的问题...

【坑1】
阿里云函数计算收不到微信发过来的Get请求...
别问我为什么,我也想知道

【坑2】
华为函数工作流,API网关显示4XX错误,收是收到了,但是没法调用具体执行函数...
截屏2020-05-24 10.56.55.png
到这里,想着腾讯自家的应该会支持果断放弃尝试

【坑3】
腾讯SCF云函数上代码:

'use strict';  
  
exports.main_handler = async (event, context, callback) => {  
 const { queryString } = event  
 const { echostr, signature, nonce, timestamp } = queryString  
  
 return echostr  
};

搞上之后,却发现返回后还是一直提示Token校验失败
看调用日志,返回echostr看上去也没错?!
100008401661_1590281419159_928.png
看社区也有人出现类似问题,解决的办法是:需要返回不带双引号""的内容
但是云函数返回不能指定返回类型,这可咋办?

【使用API网关开启集成响应解决问题】
具体介绍:看这里
在编辑API界面中,勾选启用集成响应
截屏2020-05-24 11.05.02.png
重新发布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就成功了

你可能感兴趣的:(微信公众号开发,微信小程序)