PHP实现微信公众平台开发---提升篇(网页授权接口)
- 网页授权接口(类似于浏览器通过cookie|session标识客户 微信端通过openid标识)
接口类型(通过网页授权 获取openid)
- snsapi_base:基本类型
- 静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面) 只获取openid
- snsapi_userinfo:详细类型
- 弹出窗口是否授权 需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息 (openid,昵称,头像,国籍,地理位置...)
- 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
接口步骤
- 用户同意授权 获取code
- 通过code换取网页授权access_token
- 刷新access_token(如果需要 避免过期)
- 拉取用户信息(需scope为snsapi_userinfo) 通过网页授权access_token和openid获取用户基本信息(支持UnionID机制 UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。)
关于网页授权access_token和普通access_token的区别(类似于雷锋和雷峰塔)
- 微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
- 其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用
基本授权(获取openid)
- 调用接口获取code
$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect" ;
- 组装参数 appid|appsecret|code调用接口 获取openid
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;
详细授权
- 调用接口获取code
$url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect" ;
- 组装参数 appid|appsecret|code调用接口 获取网页授权access_token openid
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;
- 组装参数 网页授权access_token openid 调用接口 拉取用户详细信息
$url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN" ;
/*网页授权*///获取用户openidpublic function getBaseInfo() {//获取code$appid = "XXXXXXX" ;/*调用下面url之后 返回code到 此处的$redirect_uri接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名 donglingjiu.top*/$redirect_uri = urlencode("http://donglingjiu.top/index/index/getUserOpenId");$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_base&state=123#wechat_redirect" ;/*scope=snsapi_base 静默跳转 */header('location:'.$url) ;}public function getUserOpenId() {//获取网页授权access_token$appid = "XXXXXXX" ;$appsecret = "XXXXXXXXX" ;/*scope=snsapi_base静默跳转之后 传过来的code*/$code = $_GET['code'] ;$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;//拉取用户openid$res = $this->http_curl($url,'get') ;dump($res) ;/*此处测试 百度 草料二维码 http://donglingjiu.top/index/index/getBaseInfo 生成二维码之后 手机扫码*/}/*详细授权 获取用户 昵称 地理位置 籍贯 头像...*/public function getUserDetail() {//获取code$appid = "XXXXXXXXX" ;/*调用下面url之后 返回code到 此处的$redirect_uri接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名 donglingjiu.top*/$redirect_uri = urlencode("http://donglingjiu.top/index/index/getUserInfo");$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect" ;/*scope=snsapi_userinfo 手动授权 获取详细信息*/header('location:'.$url) ;}public function getUserInfo() {//获取网页授权access_token$appid = "XXXXXXXXX" ;$appsecret = "XXXXXXXXX" ;/*scope=snsapi_userinfo手动授权 跳转之后 传过来的code*/$code = $_GET['code'] ;$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code" ;$res = $this->http_curl($url,'get') ;$access_token = $res['access_token'] ;$openid = $res['openid'] ;//拉取用户详细信息$url1 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN" ;$res = $this->http_curl($url1) ;dump($res) ;/*此处测试 百度 草料二维码 http://donglingjiu.top/index/index/getUserDetail 生成二维码之后 手机扫码*/}
PHP实现微信公众平台开发---提升篇(网页授权接口)相关推荐
- 微信公众平台开发OAuth2.0网页授权(转)
微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在 ...
- PHP实现微信公众平台开发---提升篇(上传素材并回复)
一.HTTP接收事件订阅与恢复响应消息 i. 接收事件推送 并回复 1. 无连接:当用户关注微信公众账号的时候 微信公众平台会向我们推送post请求 关注推送的并不是数组 而是XML 2. 接收 ...
- 微信公众平台开发 OAuth2.0网页授权认证
一.什么是OAuth2.0 官方网站:http://oauth.NET/ http://oauth.Net/2/ 权威定义:OAuth is An open protocol to allow s ...
- 微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发
本文主要讲解如何使用 weinxinFundation 进行二次开发. 步骤如下: 1.创建新的web项目. 在eclipse里新建一个dynamicly web project,比如本文叫weixi ...
- 微信公众平台-服务号:网页授权域名 设置
微信公众平台-服务号的网页授权域名 设置 设置与开发->公众号设置->功能设置->网页授权域名 一:下载认证文件,放置服务器中 二:设置服务器中的 Https中的nginx服务 ng ...
- 微信公众平台开发4-长链接转短链接口调用实例(含源码)
微信公众平台开发-access_token获取及应用(含源码) 作者: 孟祥磊-<微信公众平台开发实例教程> 将一条长链接转成短链接.开发者用于生成二维码的原链接(商品.支付二维码等)太长 ...
- 微信公众平台开发之在网页上添加分享到朋友圈,关注微信号等按钮
微信公众平台开始支持前端网页,大家可能看到很多网页上都有分享到朋友圈,关注微信等按钮,点击它们都会弹出一个窗口让你分享和关注,这个是怎么实现的呢?今天就给大家讲解下如何在微信公众平台前端网页上添加分享 ...
- 微信公众平台开发(一) 配置接口
一.简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动. 二.通讯机制 三.注册微信平台 ...
- 微信公纵平台基本配置php_php微信公众平台开发(一) 配置接口
一.简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动. 二.通讯机制 三.注册微信平台 ...
最新文章
- (原) ODP.NET 演示通过结果集的锁顶来更新 LOB 数据
- 人工智能升格为国家战略 唐小僧积极发展金融科技
- AVL树平衡旋转详解
- 看完这个“秒杀”设计方案!我有点慌了
- UI控件Telerik UI for WinForms发布R1 2019|附下载
- php的Apa红灯_macos – 使用自制软件更新php和mysql后的apa...
- C#如何反射出委托的签名,如何使用反射调用委托
- [学习笔记]Javascript可选的分号
- 【JS】AJAX跨域-JSONP解决方案(一)
- smarty 对数据库的简单操作。
- Vue核心技术-39,vue-router-向路由组件传递数据
- oracle 同义词public,oracle中private同义词跟public同义词
- 多参数气体监测系统(上)
- Java毕设项目晨光文具店进销存系统设计与开发计算机(附源码+系统+数据库+LW)
- There were 16888 failed login attempts since the last successful login
- 自学C语言(14)循环语句总结(新)
- 程序员副业——接私活的网站和其他路径
- Leaflet使用介绍
- java isnan_Java Double isNaN()用法及代码示例
- 中国矿业大学CTF网络安全实训平台Writeup汇总