PHP实现微信公众平台开发---提升篇(网页授权接口)

  • 网页授权接口(类似于浏览器通过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" ;

 

 

/*
		网页授权
	*/
	//获取用户openid
	public 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 
			生成二维码之后 手机扫码
		*/
	}

 

phpWechat 是由一个具有多年行业开发经验的前端 UI 设计师、PHP开发工程师组成的团队设计、研发的一套的微信公众平台管理系统,您可以瞬间完成一个公共号或者PC站或者两者皆有的平台搭建。 phpWeChat 微信+网站开发框架功能亮点: 1、100%开源,没有任何加密文件 phpWeChat核心文件100%开源,没有任何加密文件,开发者可以放心使用而无需担心留有后门程序等。 2、程序轻量级,一天读完所有代码 核心框架压缩包只有2.66M,十分利于开发者迅速阅读全部代码。 3、代码严谨,结构清晰 phpWeChat使用MVC开发模式,各个功能模块之间独立并目录结构统一。开发者可迅速掌握phpWeChat的框架结构。 4、二次开发文档十分完善 我们提供了完善的phpWeChat二次开发文档,便于开发者学习与查阅。 5、高度集成微信接口 phpWeChat高度集成了微信公共号的自动回复、菜单管理、素材管理、模板消息、粉丝管理、微信支付等常用接口,您只需一个函数或2/3行代码即可实现原本需要很费时费力才能开发的功能。 6、phpWeChat也是一个PC(网站)开发框架和CMS 慢慢您会发现,phpWeChat是一个更接近CMS功能的框架。 7、高度封装常用开发功能 只需一两行固定的代码,您便可以写出列表分页、微信支付、文件上传、邮件发送、短信发送等功能。 8、数据结构合理,负载强劲 phpWeChat集成了常见的内存级缓存(MemCache)、文件缓存处理方案,使得系统更符合大数据、大并发的公共号或网站使用。 9、集成应用市场,功能拓展一瞬间 phpWeChat集成了应用市场并在线安装应用的功能,您可以在一瞬间安装完成其他开发开发的功能模块。 phpWeChat安装方法: 将下载的程序压缩包(zip格式)解压后,将全部文件和文件夹上传至网站根目录。然后输入域名/install.php 即可进入安装程序。 注意:安装phpWeChat前请先创建好phpWeChat所需的数据库。 phpWeChat 目录结构: addons 功能模块目录 admin 公用后台目录 api 插件目录 data 数据缓存目录 install 安装程序目录,安装后请改名或删除 include 公用操作类目录 statics 静态文件目录 template 视图(模板)目录 upload 上传文件存放目录 phpWeChat 更新日志: 新版v1.0.3发布: phpWeChat PC+微信公众号开发核心框架v1.0.3针对v1.0.2版本出现的问题,主要修复了和增加了以下功能: 1、优化自定义模块操作; 2、优化安装过程; 3、修复一处在线支付的PHP版本兼容问题; 4、修复一处自定义模块的问题; 5、修复后台模块管理显示未知版本的bug; 6、修复粉丝行为IP报错的Bug; 7、删除一些冗余代码; 8、修复消息模板不存在时,一直提示[同步中]的bug。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值