php微信公众平台接口(五)——微信网页授权

微信网页授权,就是在公众号打开自己的网页时,通过调用微信的接口把用户的信息发送给自己的服务器。

这里需要到官网登录自己的公众号账号设置授权回调域名,填写的是自己网页的域名。具体更多的作用有待发现。


 1、获取code

code每次获取都不一样,而且只能用一次,用来换取网页access_token。

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

请求方式:GET

APPID不解释;

redirect_uri就是重定向URL地址,就是请求者接口后浏览器会跳转到这个URL上,也就是微信会带参数code请求你的URL;

response_type 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息);

state 就是重定向跳去你的URL时带的参数,如填1的话,就会跳转http://your_url.com?code=CODE&state=1,这个可以不填;

注:这接口只能通过微信来请求


2、获取网页access_token

获取到code后,就可以根据code来请求微信接口来获取网页access_token和openid,通过这些就能获取用户信息,(为什么要搞这么复杂……),这个网页access_token和之前说的access_token不同,是不能共用的。

请求接口:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

请求方式:GET (为什么要用GET?这不就很容易暴露appid和secret么……)

参数部分不解释了。

这里有一个超级巨坑,(以下是吐槽,嫌太长可不看)当使用微信内置浏览器获取code后重定向去你的URL时,它会跳出“是否继续访问”类似的提示,此时其实微信已经请求过你的URL了,而当你点击“继续访问”这提示时,微信会再次请求你的URL,严重的话还会请求五六次以上。问题来了,这段期间微信每次请求带的参数code都是相同的,而code只能用一次,如果你的URL做了获取网页access_token的操作,那么多次请求的话就要炸了。网上查了下,目前没有找到很好的解决方法,大多数人都是把code保存在缓存中,用缓存是否存在来判断是否请求获取access_token接口。然后另一个问题来了,微信内置浏览器的缓存超有问题(也可能是我个人问题),使用cookie保存code,面对微信发送过来的多次请求,第一次请求确定把code保存到cookie里了,但第二次请求却检测不到cookie????试了很多次都不行。之后无奈之下我就使用了redis,成功解决微信多次请求的问题了。可是redis是把缓存保存在服务器中,这显然不合适,所以不推荐。


3、获取用户信息

scope是snsapi_userinfo的话就能请求这接口

请求接口:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

请求方式:GET

这个很简单,一般不会出什么问题,注意access_token有效时间和openid是否正确就行了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发你只要需要把配制文件的APPid、KEY等修改为你自己你申请的时的就可以,傻瓜式操作,无论你是技术大神还是刚入门的小白,只需修改一下配制文件,便可帮助你实现各种网站登陆。 使用方法 1. 配置网页授权域名 登录微信公众平台后台,在左侧目录底部找到“开发”-“接口权限”,点击进入并在接口列表找到“网页授权获取用户基本信息”,点击右侧“修改”,在授权回调域名填自己的域名,例如 www.abc.com,注意此处是域名,不是网址,所以不带http,也不带/等。 2. 修改参数配置 在左侧目录底部找到“开发”-“基本配置”,找到APPID和APPSECRET两个参数的值,其APPSECRET的值默认是隐藏的,需要微信扫描验证才得显示。 使用Notepad++等编辑器打开,weixin.class.php文件,修改其的APPID和APPSECRET参数,并保存。 define('APPID', "111111"); define('APPSECRET', "111111"); 3. 上传代码 将Demo代码上传到上述域名网站目录,比如上传到根目录的oauth2目录,这样,该Demo的访问路径将是 http://www.abc.com/oauth2/index.php 4. 访问体验 将上述目录在微信打开,就可以体验微信的OAuth2.0网页授权过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值