在进行小程序开发时,我们常常需要利用服务号来发送信息。然而,要让小程序的用户与服务号实现绑定,这并非易事,过程中会遇到诸多挑战。今天,我将向大家分享一些自己的心得体会。
小程序与公众号绑定
要获得unionid,得先让小程序和公众号绑定,这是官方规定的步骤。官方有详细文档解释如何绑定。不绑定的话,很多功能就不可用,比如后续的用户关联功能。我刚开始没注意这事,结果问题频出,很难找到根本原因。这个步骤非常重要,必须引起足够重视。而且,对于同一个用户在微信开放平台上的不同应用来说,这个绑定特别关键,因为它能保证不同应用间能用同一个unionid来关联用户。
看似容易的操作,实则要求格外谨慎。每个步骤都必须严格按照文档来执行,不能凭个人臆测。我曾有个朋友,他自以为完全明白了,却没按文档操作,结果一直没能得到他想要的信息。
服务号开发者服务器配置
这一环节是关联微信服务号的开发步骤,简单说就是为服务号配置开发者端服务器。若操作正确,用户关注或取消关注时,微信服务器会自动将这一信息推送到我们服务器。这样做有助于我们管理用户信息。您可以查阅相关官方文档。这是掌握用户活动的重要方式,只有掌握这些活动,我们才能更高效地进行用户关联等操作。请务必按照要求进行设置,确保不遗漏任何步骤或设置。我之前就因为一个小细节处理不当,导致消息推送未能成功。
获取公众号用户列表
接下来要获取公众号的会员名单,这份名单囊括了每位用户的唯一标识。官方文件对此有详尽的解释。这份名单相当于掌握了用户的详细资料。了解用户信息后,对后续的交流与操作会有更全面的把握。不过,在获取名单时,一定要保证数据的准确性和完整性。我之前就遇到过数据不齐全的问题,经过仔细检查,才发现是网络请求出现了小差错。
利用公众号openid获取unionid
继续操作时,必须使用公众号的openid来查找用户的unionid,这一步骤在《通过公众号openid获取unionid》的文档中有详细说明。这一步非常关键,因为unionid是小程序和公众号用户间连接的纽带。一旦这一步出错,就像链条断了关键一环,之前关于用户名单、开发设置等所有努力都可能白费。获取unionid时,一定要确保之前获取的openid是正确的,我在这个过程中总是多次检查openid的准确性。
缓存access_token
小程序和公众号的认证方式不同,需要各自使用对应的appid和密钥来申请。这些凭证不能每次使用时都重新获取,这样做既耗时又可能影响使用效果。因此,最好将它们存放在缓存中。如果不进行缓存,每次获取都可能带来不确定的延迟或错误。比如,获取速度慢可能会导致用户操作时感到卡顿,进而影响他们的使用感受。
完成用户关联的情况分析
若用户已关注该公众号,登录小程序获取unionid就相对容易。然而,若未关注,前端必须调用wx.getUserInfo接口,把加密信息发送给后端来解密,这样才能获得unionid。同时,还得留意session_key的有效期,一旦它过期了,就无法再使用了。
有两种情况需特别留意,第一种是那些在公众号开发初期就关注了但未完成绑定操作的用户,他们需要首先获取用户名单,接着逐个获取他们的unionid。第二种是那些虽已关注公众号却未曾使用过小程序的用户,在登录小程序时,应先核对相关资料表,尝试完成绑定。
def send_oa_msg(oa_openid, template_id, jump_param, param):
"""
发送模版消息
"""

oa_token = get_oa_access_token()
url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={oa_token}'.format(oa_token=oa_token)
post_data = {
"touser": oa_openid,
"template_id": template_id,
"miniprogram": jump_param,
"data": param
}
res = requests.post(url, json=post_data)
result = res.json()
if result['errcode'] == 0:
return True
else:
return False
操作过程中我遇到了几个小麻烦,比如不小心把miniprogram放错了地方到data里,结果导致不能顺利跳转到小程序,为此我花了不少时间去查找问题。提醒大家,操作时要特别小心,别再走我的老路。大家在关联小程序和服务号用户时,有没有遇到什么特别的情况?欢迎在评论区留言讨论,也欢迎点赞和转发。