文章来源:[https://www.jianshu.com/p/5b4b009a0864] 感谢作者[兴尽晚归舟]的文章,给我起到了指点迷津的作用。
微信也是一个浏览器
首先,对于微信开发者来说,把微信称作是一个浏览器是丝毫没有问题的。如果你现在是在使用微信来阅读我现在的这篇文章,那么你就是在把微信当作一个web浏览器来使用,因为这篇文章也是写在一个网页上的。
那么网页授权是什么?话还得从头说起...
在微信上浏览一个网页的时候发生了什么
既然微信是一个浏览器,那么理论上所有的网页,都是可以使用微信来访问的。假如一个公众号运营者想要向自己的用户提供一些网页服务,那么直接把网址链接放在公众号的菜单按钮或者图文推送就可以了。
但是好像少了一点什么...
现在一个铁杆粉丝通过公众号来访问网页,那么问题来了:
开发者:你是谁啊?
用户:你的铁杆粉丝啊!不是说粉丝找你就有小礼物吗?
开发者:你谁啊?凭什么知道你是铁杆粉丝啊?
对,少了一个用户ID.
上一篇文章我们提到过OpenID是一个用户在微信公众号里面的唯一身份标识,那么最合理的解决方案就是使用OpenID来标识用户。最早的解决方案是这样的:
- 用户点击公众号菜单
- 微信服务器告知开发者:
大哥,有个用户点咱们菜单了,这家伙OpenID是xxxx
- 开发者告诉微信服务器:
给他一个url让他访问,顺便把他信息写在url里面
4.用户获得一个带有自己身份信息的定制的url,例如:
www.baidu.com?name=隔壁老王xxxx
5.用户使用定制的url访问网页
开发者:哎呦这是谁啊?来就来呗还带东西!哦原来是老王啊,失敬失敬!来给您一个cookie,下次来不用带东西我都知道是你!
但是这种做法有一些风险,第一是cookie经常会被老王弄丢,第二条就更严重了:甭管是谁,只要通过“www.baidu.com?name=隔壁老王xxxx”这个网址来访问,都会被当成隔壁老王来对待。
那么怎么做才能比较安全呢?总不能让用户再单独注册一个帐号吧?不是说好了 OpenID是唯一标识吗?还要再注册一个帐号来登录?人与人之间最重要的信任呢?
这时候就需要有个东西来解决问题了,我们今天的主角——网页授权.
网页授权正传
网页授权是专门用来解决上述问题的,除此之外,这哥们儿还带来了许多额外的小玩意儿,我们慢慢说来。
首先,网页加载了网页授权之后,用户使用微信来访问网页,交互信息是这样的:
网页授权:大哥,人来访问你的网页了,OpenID是xxxx,你看着办吧!
以上是普通青年模式,文艺青年略有不同,还想要获得用户的更多信息,例如昵称、头像、性别等等,这个时候微信网页授权有点犹豫:
我还是先问问用户吧...
所以,如果开发者想要获得更多的用户信息,则会先跳转到微信的一个页面,这个页面你肯定不陌生,它长这样:
image.png
好,现在如果用户点击了确认登录按钮,网页就可以获得用户的各项公开信息了。如果开发者想获得用户的更多信息,比如说手机号码、家庭住址、电子邮箱,对不起,这个网页授权帮不上忙。
微信网页开发的更多小玩意儿
除了通过网页授权获取用户信息之外,微信还为前端开发者提供了一些小工具,包括获取用户地理位置、读取用户本地图片或调用摄像头拍照、调用话筒采集声音、获取网络状态、显示或隐藏页面分享按钮、调用微信扫一扫功能、调用微信卡券、微信支付、获取用户页面分享事件等一系列功能。这些被称为JS-SDK。下一篇文章,将会讲述JS-SDK的一些知识。
晚安。
网友评论