微信网页授权的一些总结
1.授权一定要关注公众号吗?
答:授权不一定非要关注公众号。
2.授权只能在线上执行吗?
答:是的,否则会报redirect uri 参数错误。这里需要公众号设置一个安全的网址。比如:zhudianbao.diandodo.com,其他的,包括本地的都无法成功授权。
3.授权后获取的openid是对所有公众号吗?
答:授权的openid,只对授权的公众号有效。每一个微信用户,对不同的公众号,有不同的openid。这个openid对于公众号来说是唯一的。
4.openid有什么用?
答:公众号发送模板消息是基于这个openid的。
5.要想接收到公众号的消息,一定要关注公众号吗?
答:必须要关注公众号,否则,即便有openid,公众号发出消息,用户也收不到。
6.网页授权access_token与分享的jssdk中的access_token一样吗?
答:不一样。网页授权access_token 是一次性的,而基础支持的access_token的是有时间限制的:7200s。
7.网页授权access_token与基础支持的access_token不同,那微信分享中的access_token,是不是基础支持的access_token
答:是
网页授权access_token 只能获取到一个微信用户信息,是与微信用户一对一的关系,
而基础支持的access_token,在有效期内就可以使用access_token和openId 获取微信用户信息
8.网页授权access_token有次数限制吗?
答:没有限制
9.关于网页授权的两种scope的区别说明
1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
通过code换取网页授权access_token
首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
第一步:用户同意授权,获取code
第二步:通过code换取网页授权access_token
第三步:刷新access_token(如果需要)
第四步:拉取用户信息(需scope为 snsapi_userinfo)