微信公众号开发模式之用户账号绑定

公司需要微信这个平台和用户交流,于是开始研究微信公众平台。微信公众平台分为两种模式,其一是编辑模式,比如用户发什么内容,你可以响应什么内容。另外一种便是开发模式,这个模式功能丰富,不仅仅可以获取到用户的基本信息,还能获取用户的地理位置以及其他功能。

本来准备自己来开发一套微信公众号后台,后来发现已经有相关的开源产品,使用过三四种,发现最好用的还是”微擎“,咱们运维生存时间也不是替他打广告,确实比较好用,界面美观而且可以自己开发插件。不过呢,功能还是有些不足。

最近想研究微信怎么绑定网站的用户账号,类似招商银行那种,其实招商和微信是有深度合作,提供的接口也是很丰富,甚至他们网络都走专线。这不是我们这次要讲的重点,以下是来自网上的内容,有些道理。

最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使 用一些功能。我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下,发现这个问题没什么好的答案,很多都说取不到微信用户名实 现不了,甚至有说实现了这个功能的应该是与微信有内部合作的。

搜索无果,遂自己动手实验,后发现其实完全可以的,看来实践才是检验真理的唯一标准,方案上也很简单,我分几点来说。

用OpenID绑定即可

微信接口中虽然没给用户的微信账号,但给了用户的OpenID,这个OpenID对一个公众号是唯一的,测试也证明不会改变,也就是说同一个微信号和同一个公众号交互,我们得到的OpenID是不会变的,因此,可以用OpenID作为微信用户的身份标识。

如何绑定

俗话说,没吃过猪肉还没见过猪跑。看招行信用卡公众号是如何做的,在微信里面给用户一个验证链接,用户点击链接,微信会用内嵌的浏览器打开这个链接,然后就是一般的网页登录验证界面,我们通过HTTP(S)获取用户输入的系统用户名与密码,验证通过后完成绑定。 具体如何生成链接和如何传递OpenID下面详述。

如何生成绑定链接

绑定涉及到用户的身份甚至利益,所以需要注意安全性。我们需要绑定的是OpenID和系统用户,系统用户名是用户直接在链接页面输入后通过 HTTP(S)传给我们的,这没有问题。OpenID对用户来说透明,用户不会传给我们,我们也只有在用户在微信中向公众号发消息时才可获得 OpenID,所以很明显,OpenID需要包含在生成的链接中,至于需不需要对OpenID作加密就看你自己了,我觉得这不重要,更为重要的是要在链接 中带上签名和加上时间戳。因为我们需要确认这个链接是由我们服务端生成的,用户自己或者其他人不能够伪造出这个链接,加上时间戳是为了给这个链接一个过期 时间,如果不限制过期时间,假设用户绑定后这个链接通过某种方式被别人知道,那么这个人就可以把自己的账号与用户的微信号绑定。所以我采取的方法是用 OpenID、过期时间再加上一个密钥生成签名,生成签名的方法和微信服务器接口验证时的签名方法类似(密钥最好另选一个只有自己知道的)。

如何传递OpenID

有了绑定链接,用户点了绑定链接,但这只是第一步,第二步我们需要在用户在链接页面提交登录请求后进行验证,OpenID怎么传到第二步中呢?有人 说了,这还不简单,在登录表单中加一个隐藏域放用户的OpenID一起提交给验证的Handler不就OK了,那我只能说很遗憾,你前面所做的安全工作都 白费了,一旦A用户的OpenID泄漏,B用户就可以把自己的账号与A用户的微信号绑定了。所以永远不要相信客户端提交的东西。我的方法是当用户点击生成 链接后,在链接页载入时,将OpenID存到session中,因为这个session是没法伪造的(cookie被盗除外),所以只有点击这个链接的用 户的session中才会有链接中包含的OpenID。

关于微信服务器签名多说一句

大家都知道微信公众号消息接口验证时微信会向我们服务器发一个GET请求,在其中带上只有我们和微信服务器知道的签名,我们在请求处理 Handler中会验证这个签名,这点大家无异议;消息接口验证通过后,微信就会把用户发的消息以POST的方式发给我们,很多人可能会在这里忽视对签名的检查,从而给恶意者伪造用户请求的机会。在微信以POST方式传递用户的消息时,仍然会将签名信息附在URL参数中,我们在处理每一个POST请求时, 第一步还是得像处理消息接口验证时一样,去对URL参数中的签名作验证,只有签名验证通过后才可去取POST的信息。

关于微信公众号用户账号绑定就是这么多,其实很容易实现,我在这里把我的方法和大家分享一下,老鸟可以忽略,主要是希望对新手有一些帮助。欢迎探讨,敬请轻拍。

参考资料

微擎:http://www.we7.cc
微信公众平台:http://mp.weixin.qq.com
转自:abyssly.com/2013/09/20/wx_bind/(打不开,内容是从百度快照抠出来的)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信公众号用户绑定是指将微信用户的身份信息与公众号进行绑定。这样,公众号就可以给用户提供个性化的服务,并跟踪用户的使用情况。 要进行微信公众号用户绑定,需要获取用户的授权。用户可以通过扫描二维码或者点击链接来进行授权。 在用户授权后,公众号可以使用 access_token 来获取用户的身份信息。access_token 是一个令牌,可以用来调用微信提供的接口,如获取用户信息、发送消息等。 获取 access_token 需要使用 appid 和 appsecret,这两个值是在微信公众平台注册公众号时获得的。可以使用以下方式获取 access_token: 1. 通过微信公众平台提供的接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 2. 使用微信开发工具包(如 wechat-sdk)提供的方法。 获取到 access_token 后,可以使用它来调用微信的各种接口,实现公众号的功能。 希望这些信息对您有帮助。 ### 回答2: 微信公众号用户绑定和获取access_token是指在开发微信公众号时,用户需要通过绑定微信公众号获取用户的唯一标识,同时需要获取access_token,用于进行微信公众号的接口调用。 微信公众号用户绑定是指将用户微信账号与公众号进行关联。当用户使用微信扫描公众号的二维码或搜索公众号并关注后,用户微信账号就会与公众号产生绑定关系。通过绑定,公众号可以获取用户微信唯一标识openid,并在后续的业务中使用该openid进行用户身份的识别和处理。用户绑定后,可以接收公众号的消息推送,参与互动等。 获取access_token是为了进行微信公众号的接口调用,如发送消息,获取用户信息等。access_token是公众号接口调用的全局唯一票据,在一定时间内有效。开发者可以使用appid和appsecret去微信开放平台接口获取access_token,获取成功后,可以保存起来在一定时间内复用,减少请求次数。在接口调用时,需要在请求中携带access_token,微信服务器会校验并返回相应的结果。 可以通过以下步骤来获取access_token: 1. 使用appid和appsecret向微信开放平台接口发送请求。 2. 微信开放平台接口验证appid和appsecret的正确性,并生成access_token。 3. 将生成的access_token保存起来,方便后续的接口调用使用。 总结:微信公众号用户绑定和获取access_token是在开发微信公众号时必要的步骤。用户绑定后,公众号可以获取用户的唯一标识openid,进行个性化推送等业务。获取access_token后,公众号可以使用该票据进行接口的调用,如发送消息,获取用户信息等。 ### 回答3: 微信公众号用户绑定是指将用户微信账号与公众号进行绑定,让用户能够接收公众号的消息和使用公众号提供的服务。用户可以通过扫描公众号的二维码、点击公众号的链接或搜索公众号的名称等方式进行绑定绑定之后,用户可以在微信中收到公众号的推送消息,并能够参与公众号提供的互动内容。 获取access_token是为了进行微信公众号开发所必需的操作之一。access_token是用于调用接口的全局唯一凭证,每个公众号是唯一的。微信公众平台会为每个公众号生成一个有效期为2小时的access_token,并且提供了接口用于获取access_token。获取access_token的方法是使用公众号的唯一凭证AppID和AppSecret在微信公众平台接口中进行请求,返回结果中包含了access_token的值。 开发者可以利用access_token调用微信公众平台提供的各种接口,比如发送消息、获取用户信息等。在开发过程中,需要特别注意access_token的有效期,及时更新access_token以确保接口调用的正常进行。为了提高效率和安全性,可以将access_token保存在服务器中进行管理,每次需要使用时从服务器中获取最新的access_token进行调用。 总结来说,微信公众号用户绑定是为了让用户与公众号进行关联,而获取access_token是为了开发者能够调用各种微信公众平台接口进行开发。这两者都是微信公众号开发中非常重要的步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值