文档章节

微信网页授权snsapi_base、snsapi_userinfo的问题

zwjjap
 zwjjap
发布于 2015/09/15 16:54
字数 571
阅读 441
收藏 4

  微信网页授权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的准确性。极端情况下考虑有人有多个微信号。。。


本文转载自:http://www.oschina.net/question/174025_240516

zwjjap
粉丝 13
博文 198
码字总数 21945
作品 0
武汉
程序员
私信 提问

暂无文章

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.7K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部