微信网页授权SCOPE分为snsapi_base、snsapi_userinfo,前者是用户无感知的静默授权只能拿到openid;而后者需要用户确认,能拿到更多的用户信息。

我有一个系统需要进行网页授权,拿到用户信息。

方案1:

只使用snsapi_useinfo授权,并把用户信息保存到数据库,30天后就重新用进行snsapi_userinfo授权

弊端:实践发现很多用户换了头像,换了昵称,导致用户头像裂了,昵称对不上。增加授权频率又觉得用户体验不太好。。。

方案2:

用户进行一次snsapi_userinfo授权,保存openid、refresh_token到数据库。以后使用snsapi_api授权拿到openid,然后根据openid用从数据库取出refresh_token,通过refresh_token获取access_token ,再通过access_token获取到用户信息。

弊端:实践发现根本行不通,refresh_token拿access_token的时候就提示refresh_token已经过期了。。。

我更倾向于方案2,于是就在找refresh_token过去的原因,后来发现snsapi_base授权也能返回access_token、refresh_token。正是由于snsapi_base授权导致了我通过snsapi_userinfo授权保存的refresh_token失效!那通过它能否拿到用户信息呢?经过实践发现snsapi_base得到的access_token也能拿到用户信息!!

那这样就与官方文档冲突了。。。因为官网文档说snsapi_base授权只能拿到openid的。而且我实践也发现,有时snsapi_base授权得到的access_token是拿不到用户信息的,

那么有这种可能,那就是如果用户之前进行了snsapi_userinfo授权,那么在一定时间内进行snsapi_base授权拿到的access_token是可以拿到用户信息的,这个时间就不好测试了。

我想请教下了解微信网页授权的同学,是不是如我猜想的这样?如果是,那么进行snsapi_userinfo授权后多次时间进行snsapi_base授权可以拿到用户信息。请对这方面了解的同学不吝赐教~~

 把openid保存到cookies可以避免使用snsapi_base授权去拿openid导致snsapi_useinfo授权得到的refresh_token失效,但是无法保证openid的准确性。极端情况下考虑有人有多个微信号。。
 二者区别如下:

微信网页授权snsapi_base、snsapi_userinfo的问题的更多相关文章

  1. 玩玩微信公众号Java版之六:微信网页授权

    我们经常会访问一些网站,用微信登录的时候需要用到授权,那么微信网页授权是怎么一回事呢,一起来看看吧!   参考官方文档:https://mp.weixin.qq.com/wiki?t=resource ...

  2. 微信网页授权封装接口——node.js版

    Wechat 网页授权 授权url:(请在微信客户端中打开此链接体验) xxx为config.js中的WECHAT_DOMAIN 1.scope为snsapi_base xxx/?route=auth ...

  3. 服务号使用微信网页授权(H5应用等)

    获取授权准备 AppId 服务号已经认证且获取到响应接口权限 设置网页授权域名 公众号设置 - 功能设置 - 网页授权域名.注意事项: 回调页面域名或路径需使用字母.数字及"-"的 ...

  4. 微信网页授权,错误40163,ios正确,安卓错误?

    2017-07-29:结贴昨天研究了半天,也没解决,看到出错的http头里面有PHPSESSID,回头去修改了一下程序里的session部分的代码(这部分代码在微信网页授权之后),,也不知道是腾讯那边 ...

  5. Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息

    转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...

  6. 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP)

    wechat github 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP) 概述 公众号开发是痛苦的,痛苦在好多问题开发者文档是没有提到的,是需要你猜的. 在开发过程中 ...

  7. 微信网页授权,获取微信code,获取access_tocken,获取用户信息

    微信开发中,经常有这样的需求:获得用户头像.绑定微信号给用户发信息.. 那么实现这些的前提就是授权!   1.配置安全回调域名: 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 ...

  8. C# 微信网页授权多域名解决

    在做微信开发的时候,会遇到这样的场景:一个公众号,会有多个业务:官网.论坛.商城等等 微信网页授权域名 目前最多可以填写两个!!!,那么问题来了?这应该怎么办? 答案就是: 做一个中转服务! 域名1: ...

  9. php 微信登录 公众号 获取用户信息 微信网页授权

    php 微信登录 公众号 获取用户信息 微信网页授权 先自己建立两个文件: index.php  和  getUserInfo.php index.php <?php //scope=snsap ...

随机推荐

  1. 涵涵和爸爸习惯养成进度表(二)(May 30 - )

    规则说明 22天内,没有哭脸,不超过三个无表情脸,可以给一个奖励(动画书等) 涵涵违反规则,在爸爸和妈妈都同意的情况下,可以给无表情脸 爸爸违反规则,在妈妈和涵涵都同意的情况下,可以给无表情脸 获奖记 ...

  2. ie6下js更新元素display:block后,仍然不显示的hack办法

    $hotGames.html(html).removeClass("hide").show();//代码执行到这里,在ie6下仍然无法正常显示 //只有执行了下边的两行代码后,才正 ...

  3. 2014年6月份第3周51Aspx源码发布详情

      基于知识树的多课程网络教学平台源码  2014-6-16 [VS2008]功能介绍:本平台是一个支持网上教学的网站,支持多个课程,教师可根据需要创建课程,进行课程结构.题库等的管理.   技术特色 ...

  4. JS总结 节点

    nodeName 获取节点名称 元素节点:返回标记名称  属性节点:返回属性名称 文本节点:返回文本#text nodeTyle 获取节点类型 元素节点:返回1 属性节点:返回2 文本节点:返回3 n ...

  5. C#窗体无法接受Keydown事件

    问题一描述:当新建一个窗体时,添加KeyDown事件后,会正常处理,但是当添加有控件时,比如Button,TextBox,不会触发窗体的KeyDown事件,也没有调用KeyDown事件的处理程序. 原 ...

  6. ThinkPHP学习遇到的点问题(学习中,持续更新)

    1.__ROOT__变量没有值的问题 今天遇到这个比较变态的问题,可能是我技术比较菜吧,搞了一个多小时,最后发现问题可能出现在 入口文件中定义的APP_NAME的名字和项目的跟目录名称相同了,比如我网 ...

  7. Mysql 根据时间戳、时间按年月日分组统计

    create_time时间格式 SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY week ...

  8. Mac小知识(不定时更新)

    1.显示隐藏文件夹(在mac命令行中输入以下代码即可): 1)显示隐藏文件夹 defaults write com.apple.finder AppleShowAllFiles Yes &&a ...

  9. Linux服务器之间的目录共享

    1.在Redhat Linux中查看是否已安装NFS及portmap的命令如下:rpm -qa |grep portmaprpm -qa |grep nfs2.如果没有安装这两个软件包,安装命令如下: ...

  10. Pyhon环境搭建-window

    1.安装python3.4.3版本 地址:(64位)https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64.msi (32位)http:/ ...