-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
微信公众号网页开发之授权、支付、分享功能 #30
Comments
微信支付微信支付流程
关键代码
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
微信公众号网页和移动端wap的区别
微信公众号网页开发和移动web开发无本质区别,只是在移动web开发的基础上增加了一些微信提供的扩展能力,如:支付、分享、地理定位等,可以理解为:移动web + 微信能力 = 微信公众号网页开发
什么是JS-SDK
微信JS-SDK:是开发者在网页上通过JavaScript代码调用微信原生功能的工具包,开发者可以用它在网页上实现录制和播放语音、扫一扫、分享等能力
微信的用户机制
为了识别用户,每个用户在每个公众号下都有一个OpenId,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,此UnionID是在拉取用户信息(需scope为 snsapi_userinfo)时返回的(后续授权功能会提到)
网页授权
如果用户在微信端访问网页,公众号可以通过微信网页授权来访问用户的基本信息。
网页授权回调域名说明:
在公众号请求网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com 无法进行OAuth2.0鉴权
如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可
网页授权的两种scope区别:
关于UnionID机制:
如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的,此unionid是在拉取用户信息(需scope为 snsapi_userinfo)时返回的
关于静默授权的场景:
网页授权的流程
前端代码实现
假设我们有这样的需求:用户进入网页通过静默授权拿到用户openId,在指定场景下(如设置用户信息)需要手动授权拿到用户的userInfo
注意
192.168.30.77 xxx.abc.com
,我们本地访问地址由原来的:192.168.30.77:8080/index
改成xxx.abc.com:8080/index
axios
、fetch
、umi-request
请求时默认不带cookie
的,需要设置credentials: ‘include’
。但此属性要求后端设置的Access-Control-Allow-Origin
不能为*
,此问题在通过CROS解决跨域问题时尤为常见,报错如下:服务端常见的解决方案是获取浏览器的请求头,然后设置到
Access-Control-Allow-Origin
中,当然为了安全,可以把允许跨域访问的域名放在一个集合里,然后判断浏览器的请求头是不是在这个集合中The text was updated successfully, but these errors were encountered: