6.3 OAuth2.0网页授权

自定义菜单的按钮类型有click和view两种。点击view按钮会直接通过微信内置浏览器打开网页,但是在网页中却无法获取用户的OpenID,不能确定是哪个用户在访问网页。因此,view按钮只能指向一些与用户身份无关的页面,例如企业介绍、使用帮助、活动宣传等,而不能指向账号绑定、会员信息查询、下订单等页面。

常用的解决方案是放弃使用view按钮,改用click按钮。用户点击click按钮后,公众账号回复图文消息或包含网页链接的文本消息,用户点击消息中的链接后再跳转到网页,如图6-2所示。

虽然这种实现会多一步操作,但开发者能够在图文消息或文本消息的网页链接上附加参数以传递当前用户的OpenID,例如,图6-2所示的文本消息中的“绑定账号”4个字所带的网页超链接中含有wx_token参数,其实就是当前用户的OpenID或者加密后的OpenID,如下所示。

6.3 OAuth2.0网页授权 - 图1

图6-2 “小米手机”的账号绑定功能

  1. http:// wx.www.xiaomi.com/frontend/wxUser/bind?wx_token=oMH_GjixCjNQupuM6sssAA5588JU

从上面的描述可以得知:通过view按钮进入网页,操作次数少,用户体验好,但获取不到OpenID,无法满足要求;通过click按钮进入网页,能够获取到OpenID,但是会多一次操作和交互,使用门槛较高。那么,有没有两全其美的解决方案呢?答案是肯定的。

通过OAuth2.0网页授权接口,开发者能够获取到访问公众账号网页的用户信息,包括OpenID、用户昵称、性别、所在城市、用户头像等。利用获取到的信息,可以实现体验优化、用户来源统计、账号绑定、身份鉴权等功能。例如,图6-2所示的账号绑定功能就可以省略中间那步,直接设计成点击view按钮打开账号绑定页面。