小程序中获取公众号openid


前言

       总所周知,微信生态下不同的公众号以及不同的小程序里用户的openid也是各不相同,哪怕同一个企业同一个主体,做什么绑定都是一样,openid并不能统一起来。由于这个问题导致同一个公司下的不同公众号以及小程序的用户很难打通。尽管微信提供了微信开放平台,可以将不同的公众号小程序绑定到同一个开放平台上,这样每个用户可以获得一个unioinid,相同微信在各个公众号小程序里就能有一个统一的unioinid。
       但是这样依旧有一些局限性,比如初期企业并没有使用微信开放平台,导致初期粉丝都没有unioinid,而且微信好像并没有提供根据unioinid反查openid的接口(至少我没找到),所以我已知unioinid时要找到对应的openid,可能需要遍历所有粉丝把unioinid补起来,如果已经有上千万粉丝了,这种方案就比较离谱了。

一、面对的问题

       我们公司有一个小程序,用户在小程序上登陆,登陆后有一些消息需要使用公众号的模版消息推送通知(虽然小程序有订阅消息功能但是实在难用),但是公众号模版消息推送需要使用公众号openid,但是小程序只能获取到小程序的openid,两边不一致没法建立关联关系推送,就算现在去申请一个微信开放平台账号,也会面临我上面说的问题。

二、解决思路

1.公众号网页授权

       我的思路就是如果能在小程序里获取到公众号的appid就好了,自然就想到了网页授权,详细见官方文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html,小程序里如果可以跳转公众号授权链接,授权链接回调后不就拿到公众号的openid了

2.小程序web-view

       经过调研,小程序中虽然不能像H5页面那样直接跳转外链,但是有一个组件叫web-view,可以直接跳转web-view页面,页面指向公众号授权链接应该就可以跳转到授权地址
<view>
  <web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid={{appid}}&redirect_uri=https%3A%2F%2Fxxxxxxxxxxxx%2Fapi%2Fwechat%2Fcallback&response_type=code&scope=snsapi_base&state={{tel}}#wechat_redirect"></web-view>
</view>
然后然后微信回调到我们后端服务就能拿到公众号openid了。

3.时序图

在这里插入图片描述

最后在H5页面里可以放一些推荐关注公号的文案什么的,或者直接自动退回小程序,这样可以做到近乎没有什么用户感知的绑定小程序用户和公众号用户

总结

        以上方案已经落地实施,确实可行。
        如果只是需要用小程序appid发送公众号模版消息,有新的解决方案,小程序服务端接口有一个接口叫:统一服务消息发送,https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN,可以直接用小程序的appid给与小程序有绑定且同主体的公众号用户发送模版消息(2023年09月20日,这个统一消息发送接口被腾讯收回不能用了)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值