微信公众号开发记录

Posted by 梁远鹏 on 2025-03-10 | 阅读 |,阅读约 2 分钟

TOC

走过路过不要错过

我想要在我的网站实现一下用户扫一扫二维码完成登陆的逻辑,但是该功能需要微信公众号是非个人主体,因此我通过微信小程序实现了一遍这个逻辑.

也就是网站可以接入我的微信小程序实现用户扫一扫二维码完成登陆的逻辑,在前期可以减少一些不必要的开发工作,后续如果想要接回自己的微信公众号或者微信小程序也很方便,如果有兴趣的可以找我.

这是我做的壁纸小程序,欢迎体验:

问题列表

{“errcode”:40129,“errmsg”:“invalid scene hint: [xx]“}

调用微信 API 制作小程序码的时报错了,提示无效的 scene 参数,我的参数是 ticket=123&a=b,原来是因为 golang 在将 map 结构序列化成 json 时对 &做了转义, 因此解决思路就是保证序列化成 json 后的数据特殊符号不要被转义.

一个简单的做法是手动对 json 数据做字符串替换,例如:

jsonstr = strings.Replace(jsonstr, "\\u003c", "<", -1)
jsonstr = strings.Replace(jsonstr, "\\u003e", ">", -1)
jsonstr = strings.Replace(jsonstr, "\\u0026", "&", -1)

另一个做法是使用 jsonEncoder 来处理 json,并且指定选项 jsonEncoder.SetEscapeHTML(false)

type Test struct {
  Content   string
}
func main() {
  t := new(Test)
  t.Content = "https://lank8s.cn?ticket=123&a=b"
  bf := bytes.NewBuffer([]byte{})
  jsonEncoder := json.NewEncoder(bf)
  jsonEncoder.SetEscapeHTML(false)
  jsonEncoder.Encode(t)
  fmt.Println(bf.String())
}
{"Content":"https://lank8s.cn?ticket=123&a=b"}
Process finished with exit code 0

微信小程序报错 WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {“errno”:101,“errMsg”:“private_getBackgroundFetchData:fail private_getBackgroundFetchData:fail:jsapi invalid request data”}

我的小程序是 乐柠壁纸 小程序,本地测试没有问题,发布到线上时却发现无法正常下载壁纸,于是在微信开发者工具使用 真机调试 查看一下有没有问题,发现控制台报错了,错误内容是:

WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {"errno":101,"errMsg":"private_getBackgroundFetchData:fail private_getBackgroundFetchData:fail:jsapi invalid request data"}

原来是因为微信小程序的权限问题,需要为小程序指定相册(仅写入)权限,按照下面的图片步骤操作即可:

首先进入微信公众平台,登录对应的小程序,点击左边 管理–>版本管理,将开发版本提交审核(这里只是为了更新隐私权限,不是真的要发布),在提交审核按钮附近有一个更新用户隐私的按钮”点击更新”

现在你已经进入到了微信小程序的隐私更新页面,更新你所需要的隐私权限就可以了

更新完内容后拉到页面最底部,保存内容即可

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode