码迷,mamicode.com
首页 > 微信 > 详细

微信OPENID授权方法

时间:2016-07-13 20:32:17      阅读:787      评论:0      收藏:0      [点我收藏+]

标签:

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

 

先来几个关键字

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授权方法

标签:

原文地址:http://www.cnblogs.com/GZ-ppd/p/5667682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!