微信公众号 微信网页授权方法
2016-12-12 13:38
274 查看
自己查看微信网页授权wiki: https://mp.weixin.qq.com/wiki
第一步:用户同意授权,获取code操作方法:新建一个php文件,oauth2.php
在手机上打开上面的地址,会在微信上弹出一个确认登录的网页:
点击确认登录之后会弹出下面的页面
确认登录就可以拿到用户的信息,如果想在手机上看到底可以拿到用户的什么信息时,把代码改一下,由原来的 echo $openArr['openid'] 输出到openid 改为 输出一个数组 print_r($openArr) ,再上传代码,刷新网页看一下效果,先把完整的拿到用户信息的代码放上来:
第四步:拉取用户信息(需scope为 snsapi_userinfo)如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。从上面的图片中可以看到当前的网页的作用域为snsapi_userinfo,下一步,拉取用户的信息。以上为微信网页授权方法,欢迎讨论。
第一步:用户同意授权,获取code操作方法:新建一个php文件,oauth2.php
<?php /*网页授板获取用户openid,首先获取code*/ echo $code = $_GET['code']; /*测试code是否能输出而使用echo命令*/ ?>复制wiki中的示例代码,并将关键字替换:
/*原示例代码*/ 第一步:用户同意授权,获取code 在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect /*替换之后的代码*/ 替换appId、redirect_uri(接口配置信息中的URL,要把php替换成 oauth2.php)、scope(等于snsapi_base) https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx**********f&redirect_uri=http://1223.applinzi.com/wx_jiaj.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect通过微信的消息管理,回复如下消息, 我们在手机上打开,就会发现手机上显示一串字母与数字的组合,这个组合就是 code:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx**********f&redirect_uri=http://1223.applinzi.com/wx_jiaj.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect第二步:通过code换取网页授权access_token通过第二步的请求方法中的示例代码:
请求方法 获取code后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code //同样替换掉appid / secret / code //使用gettoken()从url中获取token,再使用json_decode()处理返回的数据
/*通过刚刚拿到的code来拿到网页授权的access_token,替换appid与secret与code='.$code.'*/ $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxb0e526a903a99dbf&secret=7cdf863bc791b55714fdfe82f891a50b&code=".$code."&grant_type=authorization_code"; /*获取token的函数*/ /*gettoken($url);*/ /*通过json处理一下返回的数据,把下面的数据输出测试一下,给个变量,最后输出时把这个$openArr的数组赋值给一个属性openid*/ $openArr=json_decode(gettoken($url),true); echo $openArr['openid'];重上新传至服务器,并重新在手机上点击刚才发的链接地址,这会拿到的一串数字与字母的组合,就是openid。
以snsapi_base为scope发起的网页授权,只能获取进入页面的用户的openid; 以snsapi_userinfo为scope发起的网页授权,可以获取用户的基本信息; 上面的代码只是获取openid的,要获取用记的基本信息的话,其它地方都是一样的,唯一的区别是发给手机的那个url,把scope的snsapi_base替换为snsapi_userinfo就能拿到用户的基本信息
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx*************&redirect_uri=http://1223.applinzi.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
在手机上打开上面的地址,会在微信上弹出一个确认登录的网页:
![](https://images2015.cnblogs.com/blog/868284/201612/868284-20161212122842464-1084814119.png)
![](https://images2015.cnblogs.com/blog/868284/201612/868284-20161212124009620-515222848.png)
<?php /*网页授板获取用户openid,首先获取code*/ echo $code = $_GET['code']; /*通过刚刚拿到的code来拿到网页授权的access_token,替换appid与secret与code='.$code.'*/ $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx****************&code=".$code."&grant_type=authorization_code"; /*获取token的函数*/ /*gettoken($url);*/ /*通过json处理一下返回的数据,把下面的数据输出测试一下,给个变量,最后输出时把这个$openArr的数组赋值给一个属性openid*/ $openArr=json_decode(gettoken($url),true); // echo $openArr['openid']; /*可以使用print_r输出下这个数组*/ print_r($openArr); function gettoken($url){ /*如果用curl请求网页,多方网页使用了gzip压缩,那么获取的内容将有可能为乱码的解决办法*/ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22"); curl_setopt($ch, CURLOPT_ENCODING ,'gzip'); //加入gzip解析 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $output = curl_exec($ch); curl_close($ch); return $output; } ?>传代码至服务器,再次打开手机上的链接地址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx*************&redirect_uri=http://1223.applinzi.com/oauth2.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect 就会看到一个带openid的数组,包含用户的信息:
!!!!!因为code只能和一次且不能刷新,如果报”40029”错误的话,说明当前code无效,你需要等几分钟,再次点击链接,才能打开带openid的数组。
第四步:拉取用户信息(需scope为 snsapi_userinfo)如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。从上面的图片中可以看到当前的网页的作用域为snsapi_userinfo,下一步,拉取用户的信息。以上为微信网页授权方法,欢迎讨论。
相关文章推荐
- NodeJs 开发微信公众号(四)微信网页授权
- 使用WX-SDK开发微信公众号(四)微信网页授权
- 微信公众号的开发之 微信网页授权(五)
- Django微信公众号开发(一)公众号内网页授权登录后微信获取用户信息
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- ajax 实现微信网页授权登录的方法
- 微信公众号开发二:关于授权网页获取用户微信信息注册用户的开发
- 微信的redirect_uri参数错误原因分析 1是 微信公众号后台的 开发者-》网页授权网址 2 是appid 填写错
- 微信网页扫码登录与微信公众号授权登录的区别
- 微信公众号开发(四)--微信网页授权,获取用户信息
- 微信公众号开发002-微信网页授权
- 微信网页授权并获取用户信息的方法
- 微信网页授权 Scope参数错误或没有Scope权限 解决方法
- 基于ThinkPHP3.2.3的微信OAuth2.0微信网页授权 微信公众号网页登录 改装
- 微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取
- 【微信公众号】微信关于网页授权access_token和普通access_token的区别及两种不同方式授权
- 微信开发笔记——微信网页登录授权,获取用户信息
- Android实现授权访问网页的方法