• 网页授权接口(类似于浏览器通过cookie|session标识客户 微信端通过openid标识)

接口类型(通过网页授权 获取openid)

  1. snsapi_base:基本类型

    1. 静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面) 只获取openid
  2. snsapi_userinfo:详细类型
    1. 弹出窗口是否授权 需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息 (openid,昵称,头像,国籍,地理位置...)
    2. 用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

接口步骤

  1. 用户同意授权 获取code
  2. 通过code换取网页授权access_token
  3. 刷新access_token(如果需要 避免过期)
  4. 拉取用户信息(需scope为snsapi_userinfo) 通过网页授权access_token和openid获取用户基本信息(支持UnionID机制 UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。)

关于网页授权access_token和普通access_token的区别(类似于雷锋和雷峰塔)

  1. 微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
  2. 其他微信接口,需要通过基础支持中的“获取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实现微信公众平台开发---提升篇(网页授权接口)相关推荐

  1. 微信公众平台开发OAuth2.0网页授权(转)

    微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息  作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在 ...

  2. PHP实现微信公众平台开发---提升篇(上传素材并回复)

    一.HTTP接收事件订阅与恢复响应消息 i. 接收事件推送 并回复 1. 无连接:当用户关注微信公众账号的时候  微信公众平台会向我们推送post请求  关注推送的并不是数组  而是XML 2. 接收 ...

  3. 微信公众平台开发 OAuth2.0网页授权认证

    一.什么是OAuth2.0 官方网站:http://oauth.NET/   http://oauth.Net/2/ 权威定义:OAuth is An open protocol to allow s ...

  4. 微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发

    本文主要讲解如何使用 weinxinFundation 进行二次开发. 步骤如下: 1.创建新的web项目. 在eclipse里新建一个dynamicly web project,比如本文叫weixi ...

  5. 微信公众平台-服务号:网页授权域名 设置

    微信公众平台-服务号的网页授权域名 设置 设置与开发->公众号设置->功能设置->网页授权域名 一:下载认证文件,放置服务器中 二:设置服务器中的 Https中的nginx服务 ng ...

  6. 微信公众平台开发4-长链接转短链接口调用实例(含源码)

    微信公众平台开发-access_token获取及应用(含源码) 作者: 孟祥磊-<微信公众平台开发实例教程> 将一条长链接转成短链接.开发者用于生成二维码的原链接(商品.支付二维码等)太长 ...

  7. 微信公众平台开发之在网页上添加分享到朋友圈,关注微信号等按钮

    微信公众平台开始支持前端网页,大家可能看到很多网页上都有分享到朋友圈,关注微信等按钮,点击它们都会弹出一个窗口让你分享和关注,这个是怎么实现的呢?今天就给大家讲解下如何在微信公众平台前端网页上添加分享 ...

  8. 微信公众平台开发(一) 配置接口

    一.简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动. 二.通讯机制 三.注册微信平台 ...

  9. 微信公纵平台基本配置php_php微信公众平台开发(一) 配置接口

    一.简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字.图片.语音的全方位沟通.互动. 二.通讯机制 三.注册微信平台 ...

最新文章

  1. (原) ODP.NET 演示通过结果集的锁顶来更新 LOB 数据
  2. 人工智能升格为国家战略 唐小僧积极发展金融科技
  3. AVL树平衡旋转详解
  4. 看完这个“秒杀”设计方案!我有点慌了
  5. UI控件Telerik UI for WinForms发布R1 2019|附下载
  6. php的Apa红灯_macos – 使用自制软件更新php和mysql后的apa...
  7. C#如何反射出委托的签名,如何使用反射调用委托
  8. [学习笔记]Javascript可选的分号
  9. 【JS】AJAX跨域-JSONP解决方案(一)
  10. smarty 对数据库的简单操作。
  11. Vue核心技术-39,vue-router-向路由组件传递数据
  12. oracle 同义词public,oracle中private同义词跟public同义词
  13. 多参数气体监测系统(上)
  14. Java毕设项目晨光文具店进销存系统设计与开发计算机(附源码+系统+数据库+LW)
  15. There were 16888 failed login attempts since the last successful login
  16. 自学C语言(14)循环语句总结(新)
  17. 程序员副业——接私活的网站和其他路径
  18. Leaflet使用介绍
  19. java isnan_Java Double isNaN()用法及代码示例
  20. 中国矿业大学CTF网络安全实训平台Writeup汇总

热门文章

  1. Uniswap V3无偿损失计算、Uniswap V3做市
  2. 深入理解大数据架构之——Lambda架构
  3. 绿色版的PDF格式文件转换器
  4. 办公计算机培训方案,办公软件培训计划.docx
  5. 为什么要使用openstry_什么是配线架?为什么要使用配线架?
  6. 众多医院cc0高清摄影图片素材一键即可获取
  7. 插件竟能如此丝滑!甚至还能查快递??
  8. abaqus如何并行计算_ABAQUS加速计算的小技巧
  9. 房地产电子商务化的主要原因是什么?
  10. 到maven仓库加载jar包(AS版本)