问题场景如下:
两个已绑定同一开放平台的公众号帐号
想在两个公众号下自定义编程内容进行微信公众号对用户发送的指定内容进行特别回复。 所以在微信公众号上设置了【开发】=》【基本设置】=》【服务器配置】页面配置了服务器的回调URL和Token。
1. 目前可以在回调页面中正常收到客户端发的消息内容 并能正常回复【账号A、B均可正常收、回消息】
2. 想通过用户发过来的内容获取用户的Openid时A、B账号发送过来的HTTP包头中的内容解析却不一致【】内容如下
公众号A发送消息携带的http包头及内容【FormUserName不是用户openid】
{ "ToUserName" : "gh_9e39faa6f2da" , "FromUserName" : "o_JycuDngzyv9asHbMMWSttT_MSc" , "CreateTime" : "1557487559" , "MsgType" : "text" , "Content" : "我是消息" , "MsgId" : "22297860969826513" } |
公众号B发送消息携带的http包头及内容【FormUserName是用户openid】
{ "ToUserName" : "gh_184bcbd8bc99" , "FromUserName" : "osku9uGmeQ3eHnjkTi6iZ6ezyyjQ" , "CreateTime" : "1557487559" , "MsgType" : "text" , "Content" : "我是消息" , "MsgId" : "22297860969826513" } |
问题: 我想请问里面的FormUserName不是真正的用户OpenId吗? 为什么获取到的内容不相同,单独授权请求的页面内容获取到的openid 是正确的。 麻烦各位了解的帮忙回答一下,不胜感激,谢谢!
请问您是公众号授权给了第三方,然后用第三方发送消息吗?有相关文档吗,我没找到
这里是openid,不是unionid……所以两个公众号获取到到的openid是不一样的
你需要匹配对应公众的appid和secret才能回复用户,而且回复的窗口是两个不同的公众号
不知道说的够不够清楚,反正就是两个公众号来的同一个用户的openid是不一样的
首先感谢您的回复, 比较晚才看到您的消息。 我去了解了一下unionid 与 openid的区别。 但是我发现依然无法解决我的问题,原因及我的问题如下:
两个公众号我都有相同的授权页面, 授权时发现两个公众号获取到的openid 信息都是一致的如下所示【所以授权后数据库存储的用户数据都是
"openid"
:
"osku9uGmeQ3eHnjkTi6iZ6ezyyjQ"
】{
"openid"
:
"osku9uGmeQ3eHnjkTi6iZ6ezyyjQ"
,
"nickname"
:
"oracle_1010"
,
"sex"
: 1,
"language"
:
"zh_CN"
,
"city"
:
"深圳"
,
"province"
:
"广东"
,
"country"
:
"中国"
,
"headimgurl"
:
"http://thirdwx.qlogo.cn/mmopen/vi_32/hBibB1GafiayFwySJ7RkkGtC04tu5aUGicOIqxXKVSdVTDKdRRSrBLdupkHBxkevBeaDRtVzUYTWg89FEz23XjZiag/132"
,
"privilege"
: [],
"unionid"
:
"oSqA1uFV3ILrMs0tjFjkhuAtQzZo"
}
用户发送消息时能获取到的用户信息却是如问题所示代码中的FromUserName字段,却是不尽相同的, 所以我无法根据openid或unionid来判断这是否是同一个用户【用户授权时获取到的openid相同,虽然是两个公众号却可判断是同一个微信用户】,进而查询数据库中用户的存储信息。【这里是我所面临的主要问题】
以上是我所面临的主要问题,我想根据用户发送消息时根据FromUserName字段或其他信息 来进行数据库查询用户数据,进而更好的反馈用户信息。 如果您有好的解决办法,希望您能继续回答一下,再次感谢。
首先授权页面里面你只调用了一组appid和secret,当然拿到的openid是一样的
但是你现在需要发模板消息给两个公众号,你其中有一个公众号是没有拿到openid的
现在解决的办法是两个公众号分别写授权,然后存储两个openid,分别对应到各自的公众号才行