今天搞了下微信授权, 总结了下微信的授权规则与步骤

先来几个关键字

Openid  微信ip(属于唯一指向公众号的id)

redirect_uri  授权回调地址

State 回调地址带参数

Appid  公众号的唯一标识

access_token 授权凭证

Code 填写第一步获取的code参数

微信授权有分两种授权

明性授权snsapi_userinfo  (拉取用户信息)

隐性授权 snsapi_base (只拉取微信openid)

OK,这些是玩授权的几个重要的参数.下面看下步骤如何实现

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

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

上面有几个参数, 需要解释下,

大写的参数, 是要你们去填写的

APPID : 公众号里面的appid 在开发者工具那里能看到

REDIRECT_URL: 回调地址 ( 授权之后该访问哪个地址)

STATE : 参数, 通过域名方式传过来的参数, 可接受

SCOPE: 授权方式( 明性授权和隐形授权)

这个完成了之后 他会跳到你的”回调地址”并返回 code值  和state值. ( )

 

这时候 要执行第二个步骤:  (通过code获取aesccos_token和openid)

获取code后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

地址如上, 依然要把参数贴上。

但是要记得把CODE贴上去

通过这一步能获取到asccos_token

!!!这时候会要注意一个规则

access_token 一天只能访问2000次.  过了2000次之后会有报错40001.要到第二天早上才能重新的刷新.

不过这个可以用一个缓存access_token的方法来使用, 因为access_token方法的缓存时间是7200秒  

这时候我们可以把他缓存在mysql或者nosql中, 用于在下次缓存的时候直接调用access_token, 这样就能缓解当天2000次调用的规则.

使用方法如下:

获取第二步的refresh_token后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

通过REFRESH_TOKEN 来获取一个长期能使用的access_token,然后缓存在数据库里面,用于下次调用,

因为只有7200秒, 他会有无效,报错是40003. 这时候我们可以用通过一个检测方法来判断这个40003报错, 然后进行下一次的ACCESS_TOKEN进行下次缓存

http:GET(请使用https协议)https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

通过OPENID + ACCESS_TOKEN 来验证 

微信OPENID授权方法的更多相关文章

  1. 网站微信登录授权 ASP.NET

    最新做一些项目都有微信登录注册什么的,今天就把自己整理的demo提供给大家 微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过code换取网页授权access_token, ...

  2. 关于微信登录授权获取unionid的方法

    前言:微信登录授权是目前普遍存在于小程序的,还有一种静默授权方式是微信提供的但是不推荐使用,由于不同设备登录openid是不同的那么我们应该怎样拿到一个唯一的ID呢,下面做分享 wxml代码 < ...

  3. 微信公众平台实现获取用户OpenID的方法

    这篇文章主要介绍了微信公众平台实现获取用户OpenID的方法,需要开发人员经过微信授权后获取高级接口才能使用此功能,用户OpenID对于微信公众平台建设有着非常广泛的用途,需要的朋友可以参考下 本文实 ...

  4. 微信小程序最新授权方法,getUserInfo

    20180511微信小程序正式关闭原先getUserInfo的逻辑 不再允许自动弹出授权框. 方法一: index.wxml(准备一个用于给用户授权的页面,我这里直接用了一个全屏按钮) <vie ...

  5. 微信h5支付“网站域名ICP备案主体与商户号主体不一致”的解决方法,H5微信支付 授权函下载

    如下图所示: 微信h5支付“网站域名ICP备案主体与商户号主体不一致”: 需提交H5微信支付 授权函 下载地址:https://download.csdn.net/download/a72400815 ...

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

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

  7. 微信公众号开发系列-获取微信OpenID

    在微信开发时候在做消息接口交互的时候须要使用带微信加密ID(OpenId),下面讲讲述2中类型方式获取微信OpenID.接收事件推送方式和网页授权获取用户基本信息方式获取. 1.通过接收被动消息方式获 ...

  8. 防止活动上线时 微信openid 被伪造的解决办法

    背景 前不久上线了一个 campaign 项目,一个 h5,后端为php,用户可以在微信中通过网页授权的方式登录,然后用微信 openid 作为唯一标识符进行签到和抽奖的操作. 结果后期出现了很多脏数 ...

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

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

随机推荐

  1. css pre如果同时运用了css的border-radius、 overflow两个属性且标签中内容太多时,外部div滚动条在firefox下滚动时很卡

    pre如果同时运用了css的border-radius. overflow两个属性且标签中内容太多时,外部div滚动条在firefox下滚动时很卡. 解决方法:去掉css中border-radius. ...

  2. export-data.js

    var timeBtnClick = (function() { function _todayClick() { $('.select-time .today').on('click', funct ...

  3. ANDROID 开机启动VNC SERVER

    ANDROID 开机启动VNC SERVER 背景信息: 最近在做一个项目,在项目需求中有这么一项“要把VNC SERVER 添加到android里并让其开机自启动”.其实做这个项目也挺缚手缚脚的,因 ...

  4. BZOJ 2535 Plane 航空管制2

    http://www.lydsy.com/JudgeOnline/problem.php?id=2535 思路:对于1,我们只需要每个点比前驱大就可以了,然后满足尽量优. 对于第二问,我们先求出这个点 ...

  5. javascript调试

    今天,发现了一个之前从未注意的角落,相信能够大大提高自己写JS的速度.能够迅速发现错误. 例如,今天的加班中调试一个js错误发现的一个例子. 1.Google浏览器报的错 以上是google浏览器报的 ...

  6. Linux系统编程(11)——进程间通信之有名管道

    管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服.FIFO不同于管道之处在于它提供一个路径名与之关联,以 ...

  7. 嵌入式设备web服务器

    操作系统:ubuntu10.04 前言:    为了提高对设备的易操作性,很多设备中提供pc机直接通过浏览器操作设备的功能.这就需要在设备中实现web服务器.    现在在嵌入式设备中所使用的web服 ...

  8. Isomorphic Strings 解答

    Question Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if ...

  9. python3 时间和日期

    Python程序可以通过多种方式来处理日期和时间.日期格式之间的转换是计算机的一个共同核心.Python的时间和日历模块能够帮助我们跟踪的日期和时间. 什么是刻度? 时间间隔以秒为单位的浮点数.特别是 ...

  10. IEEE发布2016年度编程语言排行榜

    C 语言占据榜首,但大数据类是最大赢家. IEEE Spectrum 的第三次"最受欢迎编程语言"交互式排行榜新鲜出炉.因为不可能顾及到每一个程序员的想法,Spectrum 使用多 ...