微信公众号开发笔记2

微信网页开发

现在ios微信客户端升级为WKWebview内核,需要网页开发者提前做好网站的兼容检查和适配。

Cookie和LocalStorage设置相关

一:退出微信账号后,将会清空所有Cookie和LocalStorage。

二:页面功能依赖Cookie,或有涉及到Cookie的相关逻辑 
WKWebview内部实现变更,会影响目前页面Cookie相关的逻辑。

变化1:跨域存取Cookie
问题说明:在访问一个页面A时,如果页面A引用了另一个页面B的资源(页面A和B为不同的域名),这时页面B就被认为是第三方页面。若在页面B中设置Cookie,就会命中WKWebview下阻止第三方跨域设置Cookie的安全策略,导致问题出现。
适配建议:
在WKWebview中是默认阻止跨域的第三方设置Cookie。所有通过Cookie传递的信息,可通过业务后台存储需要传递的信息,然后给页面一个存储信息相对应的access_token加密码,再通过Url中加入自己业务的access_token进行页面间的信息传递。

变化2:微信原生层面的网络请求读取不到WKWebview中设置的cookie,即使域名是相同的。
问题说明:如果页面的资源或图片存储的服务器依赖校验Cookie来返回数据的情况,在切换到WKWebview后,在微信内长按保存,或者点击预览大图时,原生层面发起的网络请求将不会完整地带上所设置的Cookie,会导致图片保存失败或预览失败。
适配建议:
建议静态资源cookie free。如果确实有信息需要传递,可通过业务后台存储需要传递的信息,然后给页面一个存储信息相对应的access_token加密码,再通过Url中加入自己业务的access_token进行页面间信息传递。

除上述两种情况,开发者不用担心其他情况下Cookie丢失的问题,所有请求都会带上完整的Cookie。

 

微信网页授权

用户从公众号访问第三方网页的时候,公众号可通过授权获取用户信息。

注意:在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

关于网页授权的两种scope的区别说明

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

 

步骤

微信授权使用的是OAuth2.0授权的方式。主要有以下简略步骤

第一步:用户同意授权,获取code

第二步:通过code换取网页授权access_token

第三步:刷新access_token(如果需要)

第四步:拉取用户信息(需scope为 snsapi_userinfo)

 

详细的步骤如下:

1.用户关注微信公众账号。

2.微信公众账号提供用户请求授权页面URL。

3.用户点击授权页面URL,将向服务器发起请求

4.服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)

5.用户同意(scope为snsapi_base时无此步骤)

6.服务器将CODE通过回调传给微信公众账号

7.微信公众账号获得CODE

8.微信公众账号通过CODE向服务器请求Access Token

9.服务器返回Access Token和OpenID给微信公众账号

10.微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)

11.服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)

 

转载于:https://www.cnblogs.com/zjx304/p/9835490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值