微信公众号用户与网站用户的绑定(一)

绑定:对于同一个用户,我们如何建立微信公众号用户(openid)与网站用户(userid)之间的对应关系。

一次完整的绑定流程应该是这样的:

①用户登录网页,点击“绑定微信账户”;
②后台使用微信接口,生成二维码链接返回给前端显示,并建立场景值A与用户的对应关系;
③用户扫描二维码,并点击关注微信公众号(假如已关注,直接跳到④);
④后台接收微信服务器推送的场景值A;
⑤后台根据场景值A,查询到对应的用户ID(依赖于②中建立的对应关系);
⑥建立用户userid与微信用户openid的对应关系;
⑦给用户的微信客户端推送“绑定成功”的提示;
⑧通知前台页面,绑定已完成,刷新页面,并返回一些微信账户信息。完成绑定。

但是,现在只需要获取到微信公众号用户的openid与公司网站用户useid的绑定。

接入微信公众平台开发,开发者需要按照如下步骤完成:

1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑

第一步:填写服务器配置

登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。

第二步:验证服务器地址的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

检验signature的PHP示例代码:

private function checkSignature()
{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	

	$token = TOKEN;
	$tmpArr = array($token, $timestamp, $nonce);
	sort($tmpArr, SORT_STRING);
	$tmpStr = implode( $tmpArr );
	$tmpStr = sha1( $tmpStr );

	if( $tmpStr == $signature ){
		return true;
	}else{
		return false;
	}
}

PHP示例代码下载:下载

第三步:依据接口文档实现业务逻辑

验证URL有效性成功后即接入生效,成为开发者。如果公众号类型为服务号(订阅号只能使用普通消息接口),可以在公众平台网站中申请认证,认证成功的服务号将获得众多接口权限,以满足开发者需求。

此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。

公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。全局返回码说明

用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。

此外,由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息(UnionID机制)中查看。

另请注意,微信公众号接口只支持80接口

时间: 2024-12-15 08:16:33

微信公众号用户与网站用户的绑定(一)的相关文章

微信公众号网页授权获取用户基本信息

话不多说,根据官方文档需求说明,首先接口权限设置修改 先根据你的URL配置一下授权回调页域名 微信公众平台OAuth2.0授权的详细步骤如下 1)用户关注微信公众号. 2)微信公众号提供用户请求授权页面URL. 3)用户点击授权页面URL,将向服务器发送请求. 4)服务器询问用户是否同意授权给微信公众号(scope为snsapi_base时无此步骤). 5)用户同意(scope为snsapi_base时无此步骤). 6)服务器将code通过回调传给微信公众号. 7)微信公众号获得code. 8)

微信公众号之主动给用户发送消息

前一段时间项目中遇到一个稍微麻烦一点的问题. 即客户要求,他在后台编辑好文章后要主动给每个用户都发送消息,并可以让用户点击直接进入文章页面. 于是乎,当时脑子一热,想着没什么大的问题,so easy.模板消息不就得了. 后来在写代码的过程中却发现,并不行. 微信公众号中模板消息有很严格的限制. 1.必须有用户主动触发事件方可发送模板消息 2.模板消息一分钟只能发送六十条,超过六十条,不好意思.你懂. 于是乎,就想到了另一种方法:群发消息 但是一看文档中群发消息的限制,发现悲催了 群发消息服务号每

制作了一个微信公众号导航的网站 http://www.wxgzh.in

微信公众号导航 http://www.wxgzh.in 是一个收集微信公众号的网站,手机屏幕看文章的体验并不好,如果能移到pc屏幕上就会舒服很多,而且关注的公众号文章一目了然,比起在微信客户端里一个一个打开看体验会好很多,看到喜欢的图片或者文章还能方便地保存. 现有的所有公众号都是从网上爬下来的,共计一万二千多个,下一步会开放自行注册添加的功能,然后应该学习传送门之类的,可以把每个公众号最新的文章也爬下来,但是这些文章如何存储呢?是只存标题.摘要.发表时间等基本信息还是全文保存?如果全文保存的话

微信公众号导出关注的用户信息

用Chrome浏览器登录公众号,打开用户管理页面,确保页面加载完毕 F12打开开发者调试工具,切换到Console控制台. 在下面的输入区输入以下代码,并按下回车:     var sc=document.createElement("script");sc.type="text/javascript";sc.onload=function(){export_userlist();};sc.src="https://dn-html.qbox.me/wxmp

Python学习之微信公众号接入 三 当用户关注你的时候

这里练习当用户关注你的时候,你会自动回复一条欢迎的消息或者介绍使用的消息. 我原本把那些回复的.xml都单个写出来的,现在就这么用,我看看是不是就一直可以用一个就可以了,如果是 我再修改成只用一个的.xml. 当用户关注你的时候,这就产生了一个事件: http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html 这里介绍的是事件消息的各种格式. 然后关注属于 subscribe  订阅. 因此现在代码需要修改一下了: 根

微信公众号用户与网站用户的绑定方案

现在很多网站都已经建立了一套完整的用户账号体系,基于这套体系,再做其他应用的用户扩展就非常方便.例如,有了微软的outlook账户,就可以登录win8,可以登录微软的邮箱,还可以登录skype.同样地,一个Apple ID可以享受苹果的所有服务.正所谓,一个账号,处处使用.对于企业,可能会有产品线通常有网站,app,微信公众号等.统一各产品线的账号体系,实现一个账号处处使用的目标是非常有必要的.网站和app使用同一个账号,不需要做任何多余的工作,客户只要有用户名密码即可登录.对于微信公众号,由于

迅虎企业网站+微信公众号套餐解决方案

为回馈广大朋友多年支持,迅虎网络特别准备了一款经典套餐回馈给新老用户,即日起至2015年2月8日,选购迅虎企业网站+微信公众号套餐,将享受¥1999元的超低价格,立即行动吧,微信公众号,网站一个都不能少. 企业网站微信公众号套餐 全新企业网站建设或改版,整合企业微信公众号,低价抢占移动互联网,提升品牌价值,提升品牌影响力全新的企业信息宣传窗口低费用,开启移动营销之旅业务数据与微信全方位整合,客户忠诚度培养利器,帮助企业实现O2O. 微信公众号功能列表(订阅号) 信息群发 将企业网站的新闻或产品更

.Net-mvc微信公众号和网站微信授权登录的实现

最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站登录授权,以及微信会员卡,优惠券和扫描二位码的功能,今天我主要想要总结的是微信公众号登录和网站微信授权登录这两者之间的区别于关联. 首先我们必须区别开来微信公众平台开发是指微信公众号进行业务开发(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432),为网站微信登录授权是需要在微信开发

微信公众号推广

1,利用软文推广宣传微信公众号  大家是做什么行业的,就可以写这方面的一些文章,最好是图文并茂的.大家可以写一些经验,知识,技巧类的文章吸引用户观看.然后就可以在文章中引导用户关注公众号的信息.写好文章后,发布在各大和自己行业相关的网站,论坛都可以,也可以到一些平台去投稿. 优质内容对于运营公众号来说真的有点难度.不过,还是有方法的.如果大家想找优质的内容,就要多关注同行业的公众号,看他们有好的内容如果允许就可以转载过来,最好留下别人的版权信息.大家也可以利用搜狗微信搜索,寻找和自己内容相关的优

微信公众号200个关键词,微星极光教你怎么突破数量限制!

关键词自动回复的使用 在大部分微信公众号运营者和用户严重,公众号最好用的功能应该就是关键词自动回复了. 既能节省客服成本,又能实现一定程度智能化答复(半匹配关键词):同时回复内容也十分多样化(图文并茂). 但是默认情况下它只有200个,完全不够用的. 微星极光--无限关键词助手 关键词自动回复助手,打破微信平台限制,轻松实现以下功能: 轻量级网页应用,全平台通用,手机也能操作. 0门槛,任何公众号都能使用,订阅号.服务号.认证号都能用: 无需操作,授权后自动突破关键词数量限制,最少2万个关键词,